如何在 R 数据框中合并具有相同值的行?
为了合并 R 数据框中具有相同值的行,我们可以使用 aggregate 函数。
例如,如果我们有一个名为 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
广告