基于因子水平的所有组合的数据帧的R行子集

时间:2019-10-08 18:12:49

标签: r subset

我正在尝试找出执行以下操作的最简单方法。我有一个数据框dfcolnames(df) <- c("A", "B", "C", "D", "E"),其中所有变量都编码为因子。给定变量的任意子集,我想生成df行的所有可能子集,这些子集可以基于这些变量的因子水平的所有可能组合来生成。

因此,基本上,我正在寻找一个以列名向量作为参数的函数allSubsets(假设c("A", "E")并返回数据帧列表。假设levels(df$A)a1, a2levels(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 :(得分:0)

我们可以使用split获得list的{​​{1}}

data.frame