有没有办法一举将单个因素的所有级别子集化?
案例:假设您有一个数据框,其中一列是一个因子(data$factor),并且您想要创建仅包含一个因子级别的子集数据框。当存在少量因子时,通过编写单独的子集命令很容易做到这一点。但是,如果您有大量关卡(例如 50 多个关卡)怎么办?在这种情况下,是否有命令或巧妙的方法来创建所有子集,而无需编写 50 多个子集命令?
有没有办法一举将单个因素的所有级别子集化?
案例:假设您有一个数据框,其中一列是一个因子(data$factor),并且您想要创建仅包含一个因子级别的子集数据框。当存在少量因子时,通过编写单独的子集命令很容易做到这一点。但是,如果您有大量关卡(例如 50 多个关卡)怎么办?在这种情况下,是否有命令或巧妙的方法来创建所有子集,而无需编写 50 多个子集命令?
无需创建循环,SPLIT 功能是解决此问题的关键。
假设要子集(或子组)的因子列位于数据框“数据”的“因子”列中,请执行以下操作:
subsets<-split(data, data$factor, drop=TRUE)
这将根据因子值创建一个子集列表。该列表将具有与因子数相同的长度。
如果您需要将每个子集放在单独的数据框中,您可以通过执行以下操作来访问它们:
group1<-subsets[[1]]
group2<-subsets[[2]]
...
您可以在请求的因子值上创建一个循环,如下所示:
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) {
...
}
}