R 数据帧子集排序规则优化


这不是

一个关于如何做某事本身的问题,更多的是如何做得更好。

在 R 中,假设我有一个数据帧 df:

df<-read.table(text="
Column1  Column2   Category    
   1        1         A   
   2        1         B       
   3        1         D       
   4        1         E       
   5        2         B       
   6        3         B       
   7        4         C
   8        4         C       
   9        5         E       
   10       6         A", header=TRUE)

现在我想创建一个(数据帧)列表,其中列表中的每个数据帧都是 df 的子集,其中每个子集都以 Category 为条件。我可以按如下方式创建它:

mylist <-list()
mylist[[1]] <- subset(df,df$Category=='A')
mylist[[2]] <- subset(df,df$Category=='B')
mylist[[3]] <- subset(df,df$Category=='C')
mylist[[4]] <- subset(df,df$Category=='D')
mylist[[5]] <- subset(df,df$Category=='E')

现在这有效,但非常笨拙,实际上是一个硬编码循环,如果我有超过五个类别,则不会轻易扩展。

有没有更紧密/更好的方法来做到这一点?

您可以使用函数 split

split(df,df$Category)

在这种情况下,您可以使用 dplyr 库和循环:

library(dplyr)
mylist <-list()
for ( v in unique(df$Category)){
  mylist[[length(mylist)+1]] <- filter(df, Category == v)
}
mylist

最新更新