R - ряд подмножеств фрейма данных на основе всех комбинаций уровней факторов - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь найти самый простой способ сделать следующее. У меня есть фрейм данных df с colnames(df) <- c("A", "B", "C", "D", "E"), где все переменные закодированы как факторы. Учитывая некоторое произвольное подмножество переменных, я хочу сгенерировать все возможные подмножества строк df, которые могут быть сгенерированы на основе всех возможных комбинаций уровней факторов этих переменных.

Итак, в основном я ищу функцию allSubsets, которая принимает вектор имен столбцов в качестве аргументов (скажем, c("A", "E") и возвращает список фреймов данных. Допустим, levels(df$A) являются a1, a2 и levels(df$E) равны e1, e2, e3, тогда я хочу, чтобы функция генерировала список фреймов данных (длина, где элементы соответствуют:

df[df$A == 'a1' & df$E == 'e1',]

df[df$A == 'a2' & df$E == 'e1',]

df[df$A == 'a1' & df$E == 'e2',]

df[df$A == 'a2' & df$E == 'e2',]

df[df$A == 'a1' & df$E == 'e3',]

df[df$A == 'a2' & df$E == 'e3',]

Я знаю expand.grid, но я неуверен, что это лучший способ сделать это.

1 Ответ

0 голосов
/ 08 октября 2019

Мы можем использовать split, чтобы получить list из data.frame s

lst1 <- split(df, df[c("A", "E")], drop = TRUE)
...