按列值合并多列,对 R 中剩余的列求和

Merge multiple columns by column value, summing remaining columns in R

想要使用 R 做一些事情(我认为是非常基本的)。我有一个很长的数据集,看起来像这样:

 Country  A  B  C  D
 Austria  1  1  4  1
 Austria  5  2  6  1
 Austria  2  8  1  2
 Belgium  6  9  9  3
 Belgium  8  1  9  2

我希望能够合并具有相同国家/地区的所有行,并对各个列中的所有数字求和,因此它看起来像这样:

 Country  A  B  C  D
 Austria  8  11 11 4
 Belgium  14 10 18 5

感谢您的帮助!

dat %>% 
    group_by(Country) %>% 
    summarise(across(A:D, sum))
# A tibble: 2 × 5
  Country     A     B     C     D
  <chr>   <int> <int> <int> <int>
1 Austria     8    11    11     4
2 Belgium    14    10    18     5

基数 R:

 aggregate(. ~ Country, data = df, sum)
  Country  A  B  C D
1 Austria  8 11 11 4
2 Belgium 14 10 18 5

与data.table:

library(data.table)
data.table(df)[, lapply(.SD, sum), by=Country ]

   Country  A  B  C D
1: Austria  8 11 11 4
2: Belgium 14 10 18 5

以 dplyr 方式:

library(dplyr)
     df %>%
     group_by(Country) %>%
     summarise_all(sum)

# A tibble: 2 x 5
  Country     A     B     C     D
  <chr>   <int> <int> <int> <int>
1 Austria     8    11    11     4
2 Belgium    14    10    18     5

有数据:

     df <-  read.table(text = ' Country  A  B  C  D
    Austria  1  1  4  1
    Austria  5  2  6  1
    Austria  2  8  1  2
    Belgium  6  9  9  3
    Belgium  8  1  9  2', header = T)

您可以使用 rowsum 来汇总每组的行数。

rowsum(df[-1], df[,1])
#         A  B  C D
#Austria  8 11 11 4
#Belgium 14 10 18 5