如何使用 dplyr 根据求和来折叠 R 中的数据帧行?


要使用 dplyr 包根据求和折叠数据帧行,我们可以使用 dplyr 包的 summarise_all 函数。例如,如果我们有一个名为 df 的数据帧,其中有一个 Group 分类列和一个数字列,则可以通过使用命令来根据求和折叠行 −

df%>%group_by(Group)%>%summarise_all(funs(sum))

考虑以下数据帧 −

示例

 在线演示

Group<-sample(LETTERS[1:6],25,replace=TRUE)
Response<-rnorm(25,3,0.24)
df1<-data.frame(Group,Response)
df1

输出

  Group Response
1  F   2.920793
2  C   2.898450
3  C   3.347825
4  A   3.174100
5  B   3.089882
6  C   2.918084
7  D   3.274836
8  F   2.709450
9  F   3.349442
10 F   2.995712
11 C   3.081089
12 A   3.123781
13 C   2.947828
14 C   3.096281
15 E   2.990183
16 E   3.061462
17 C   3.279717
18 C   2.932549
19 F   2.772635
20 B   2.993549
21 F   2.956203
22 E   2.920117
23 F   3.244469
24 F   3.376968
25 B   3.072305

加载 dplyr 包并根据 Group 列对 df1 的行求和 −

示例

library(dplyr)
df1%>%group_by(Group)%>%summarise_all(funs(sum))
# A tibble: 6 x 2

输出

Group Response
<chr> <dbl>
1 A  6.30
2 B  9.16
3 C  24.5
4 D  3.27
5 E  8.97
6 F  24.3

示例

 在线演示

Region<-sample(c("Asia","Oceania","Africa","America"),25,replace=TRUE)
Y<-rpois(25,5)
df2<-data.frame(Region,Y)
df2

输出

   Region   Y
1  Asia     2
2  America  4
3  Africa   4
4  Oceania  5
5  America  6
6  Asia     5
7  Oceania  9
8  Asia     4
9  Asia     4
10 America  5
11 Oceania  2
12 Africa   6
13 Asia     4
14 Oceania  7
15 Africa   7
16 America  2
17 Asia     5
18 Africa   2
19 America  3
20 Oceania  3
21 Oceania  4
22 Africa   5
23 Africa   5
24 Africa   5
25 America  6

根据 Region 列对 df2 的行求和 −

示例

df2%>%group_by(Region)%>%summarise_all(funs(sum))
# A tibble: 4 x 2

输出

    Region Y
 <chr>    <int>
1 Africa   34
2 America  26
3 Asia     24
4 Oceania  30

更新时间: 11-Feb-2021

3K+ 浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告