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