2017-06-22 6 views
-1

我有以下data.frame。请参阅前几行和 属性的示例。如何将df拆分为独特的组?

SubPop  Origin grid_code 
AL   2008 4.730380 
AL   2008 5.552315 
AL   2008 5.968850 
AL   2008 5.128384 
AL   2009 6.927450 
AL   2009 7.135734 
ALCentral 2008 7.381087 
ALCentral 2008 6.232927 
ALCentral 2009 6.431800 
ALCentral 2009 6.690246 
ALCentral 2009 6.794144 

我想知道如何将这个data.frame拆分成属性SubPop和Origin的组合的唯一组。例如,整个data.frame有一组独特的SubPop和Origin的48种组合。

这就是说,我想作为我的最终输出,48个列表,每个列表将只有该组的属性。 示例:第一组“AL和2008”将拥有我的数据框中具有SubPop = Al和Origin = 2008的所有条目。等等...

> unique<-unique(df[,c("SubPop", "Origin")]) 
> unique<-unique[order(unique$SubPop, unique$OriginT),] 
> df_split<-split(df, unique) 

有了这个代码,我能找到的属性的独特组合,但分裂过程随机分配属性组。

对不起,如果它令人困惑...

+3

最简单的方法可能是'myList中< - 斯普利特(DF,互动(DF $ SubPop,DF $产地))'这将返回拆分data.frames的命名列表这两个变量的相互作用。 – lmo

+0

我不确定是否将一个小块数据拆分为同构数据结构并分别对待每个数据结构是一个好主意。假设你是数据库管理员,你是否会创建48个单独命名的表,只是因为两个属性发生了变化? – Uwe

回答

2

有很多方法可以做到这一点。这里有两个:

xy <- read.table(text = "SubPop  Origin grid_code 
AL   2008 4.730380 
       AL   2008 5.552315 
       AL   2008 5.968850 
       AL   2008 5.128384 
       AL   2009 6.927450 
       AL   2009 7.135734 
       ALCentral 2008 7.381087 
       ALCentral 2008 6.232927 
       ALCentral 2009 6.431800 
       ALCentral 2009 6.690246 
       ALCentral 2009 6.794144", header = TRUE) 

by(data = xy, INDICES = list(xy$SubPop, xy$Origin), FUN = function(x) x) 

library(dplyr) 

xy %>% 
    group_by(SubPop, Origin) 
-3
mylist <- split(df, interaction(df$SubPop,df$Origin)) 
indicator <- seq_len(length(mylist)) 
eval(parse(text = paste("L" , indicator , "<- ", "mylist[[", indicator, "]]", sep= ""))) 

> L1 
    SubPop Origin grid_code 
1  AL 2008 4.730380 
2  AL 2008 5.552315 
3  AL 2008 5.968850 
4  AL 2008 5.128384 
> L2 
    SubPop Origin grid_code 
7 ALCentral 2008 7.381087 
8 ALCentral 2008 6.232927 
> L3 
    SubPop Origin grid_code 
5  AL 2009 6.927450 
6  AL 2009 7.135734 
> L4 
     SubPop Origin grid_code 
9 ALCentral 2009 6.431800 
10 ALCentral 2009 6.690246 
11 ALCentral 2009 6.794144 
+0

此答案已发布在评论中。你的帖子添加了什么值? – lmo

+0

抱歉,我没有看到上传的评论 –

+0

现在我添加了一些价值:)你可以有一个列表为每个部分 –

相关问题