2013-07-28 9 views
6

Есть ли способ подмножества всех уровней одного фактора одним чистым махом?Подмножество всех уровней одного фактора

Дело: Предполагает, что у вас есть кадр данных, где один из столбцов является фактором (фактор данных), и вы хотите создавать подмножества данных, которые содержат только один уровень фактора. Это просто сделать, когда есть небольшое количество факторов, написав отдельные команды подмножества. Однако, что, если у вас есть большое количество уровней (например, 50+ уровней)? Есть ли команда или умный способ создания всех подмножеств в таком случае без необходимости писать 50+ команд подмножества?

+1

Да, смотрите раскол?. –

+0

@HongOoi Просто попробовал - это похоже на трюк. Тем не менее, группы/подмножества все переходят в одну переменную (например, подмножества <-split (df, data $ factor, drop = FALSE). Как получить доступ к каждому из подмножеств в пределах одной переменной «подмножества»? – whistler

+0

@HongOoi Nevermind! Выяснилось, спасибо за вашу помощь! В случае, если кому-то интересно, к группам можно получить доступ из подмножеств, например group1 <-subsets [[1]], group2 <-subsets [[2]] и т. Д. – whistler

ответ

12

Без того, чтобы создать цикл, функция SPLIT является ключом к решению этой проблемы.

Предполагая столбец фактор, который вы хотите подмножество (или подгруппа) в графе «фактор» фрейма данных «данных» сделать:

subsets<-split(data, data$factor, drop=TRUE) 

Это создаст список подмножеств на основании коэффициента стоимость. Список будет иметь ту же длину, что и количество факторов.

Если вам нужно поместить каждое подмножество в отдельном кадре данных, вы можете получить доступ к ним, выполнив следующие действия:

group1<-subsets[[1]] 
group2<-subsets[[2]] 
... 
0

Вы можете создать цикл по запрашиваемым значениям коэффициентов следующим образом:

vals <- sort (unique (data[[factor]])) 
for (i in 1:length(vals)) { 
    subset <- (data[[factor]]==vals[i]) 
    n <- length (data[[factor]][(subset)]) 
    if (n >= min.n) { 
     ... 
    } 
} 
Смежные вопросы