如何在 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

更新于: 2021年11月5日

3K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告