如何合并R数据框中具有相同值的行?
要合并R数据框中具有相同值的行,我们可以使用聚合函数。
例如,如果我们有一个名为df的数据框,其中包含两个分类列,例如C1和C2,以及一个数值列Num,那么我们可以通过使用将C1和C2中的值组合的Num中的值相加来合并df的行下面给出的命令-
aggregate(Num~.,df,FUN=sum)
示例1
以下代码段创建了一个示例数据框-
grp1<-sample(LETTERS[1:3],20,replace=TRUE) grp2<-sample(letters[1:3],20,replace=TRUE) Response<-rpois(20,5) df1<-data.frame(grp1,grp2,Response) df1输出结果
创建以下数据框-
grp1 grp2 Response 1 A b 2 2 A c 2 3 B a 8 4 B c 7 5 C a 7 6 C b 6 7 C b 3 8 B c 6 9 A a 7 10 A c 7 11 C a 11 12 A b 7 13 B c 4 14 A c 2 15 B a 2 16 B c 2 17 A b 2 18 B c 5 19 C a 4 20 C b 2
为了通过查找Response的总和来合并df1的行,请将以下代码添加到上面的代码段中-
grp1<-sample(LETTERS[1:3],20,replace=TRUE) grp2<-sample(letters[1:3],20,replace=TRUE) Response<-rpois(20,5) df1<-data.frame(grp1,grp2,Response) aggregate(Response~.,df1,FUN=sum)输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
grp1 grp2 Response 1 A a 7 2 B a 10 3 C a 22 4 A b 11 5 C b 11 6 A c 11 7 B c 24
示例2
以下代码段创建了一个示例数据框-
factor1<-sample(c("Male","Female"),20,replace=TRUE) factor2<-sample(c("I","II","III"),20,replace=TRUE) Score<-sample(1:50,20) df2<-data.frame(factor1,factor2,Score) df2
创建以下数据框-
factor1 factor2 Score 1 Female III 32 2 Male III 18 3 Male III 21 4 Male III 49 5 Male I 38 6 Female III 6 7 Male I 7 8 Female I 44 9 Female III 30 10 Female I 26 11 Male II 43 12 Male III 41 13 Female I 4 14 Female I 33 15 Male I 15 16 Female II 13 17 Female III 19 18 Female III 46 19 Male II 17 20 Female I 31
为了通过查找Score的总和来合并df2的行,请将以下代码添加到上面的代码段中-
factor1<-sample(c("Male","Female"),20,replace=TRUE) factor2<-sample(c("I","II","III"),20,replace=TRUE) Score<-sample(1:50,20) df2<-data.frame(factor1,factor2,Score) aggregate(Score~.,df2,FUN=sum)输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
factor1 factor2 Score 1 Female I 138 2 Male I 60 3 Female II 13 4 Male II 60 5 Female III 133 6 Male III 129