要通过使用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软件包并基于组列求和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