这不是一个关于如何做某事本身的问题,更多的是关于如何把某件事做得更好。
在 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 的子集,其中每个子集都以类别为条件。我可以按如下方式创建它:
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)
关于R 数据帧子集排序优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051319/