我有一个像这样的数据框
a b
1 A.1 1
2 A.2 2
3 A.3 1
5 B.1 2
6 B.2 2
7 B.3 1
我需要为每个字母(这里是A和B)计算b列的总和
a b
1 A 4
2 B 5
答案 0 :(得分:2)
一个选项是使用D
中的D
根据分隔符separate
分隔列'a',使用新的'a'分组并获取tidyr
'b'。
.
或者我们可以使用sum
。将'data.frame'转换为'data.table'(library(tidyr)
library(dplyr)
separate(df1, a, into=c('a', 'a1')) %>%
group_by(a) %>%
summarise(b=sum(b))
# a b
#1 A 4
#2 B 5
)。使用data.table
删除从setDT(df1)
开始的字符,后跟数字,将其用作分组变量并获取“{1}}的”b“。
sub
使用来自.
的{{1}}的公式方法的类似选项。
sum
或使用library(data.table)
setDT(df1)[,list(b=sum(b)) , by = .(a=sub('\\.\\d+$', '', a))]
# a b
#1: A 4
#2: B 5
aggregate
base R