首页 文章

子集单个因子的所有级别

提问于
浏览
7

有没有办法在一个干净的猛扑中将所有级别的单个因子分组?

案例:假设您有一个数据框,其中一列是一个因子(数据$因子),并且您想要创建仅包含一个因子级别的子集数据框 . 当通过编写单独的子集命令存在少量因素时,这很容易做到 . 但是,如果你有很多级别(例如50级)怎么办?在这种情况下是否有命令或巧妙的方法来创建所有子集而无需编写50个子集命令?

2 回答

  • 13

    无需创建循环,SPLIT函数是解决此问题的关键 .

    假设您想要子集(或子组)的因子列位于数据框“data”的“factor”列中,请执行以下操作:

    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) {
          ...
       }
    }
    

相关问题