【问题标题】:Merge multiple columns by column value, summing remaining columns in R [duplicate]按列值合并多列,对R中的剩余列求和[重复]
【发布时间】:2021-10-19 05:19:51
【问题描述】:
希望使用 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
感谢您的帮助!
【问题讨论】:
标签:
r
dataframe
data-manipulation
【解决方案1】:
基础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)
【解决方案2】:
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
【解决方案3】:
您可以使用rowsum 来汇总每个组的行数。
rowsum(df[-1], df[,1])
# A B C D
#Austria 8 11 11 4
#Belgium 14 10 18 5