如何对基于字符串变量的数字变量的值求和

时间:2019-05-07 17:57:02

标签: r group-by dplyr

请考虑以下数据框:

df <- data.frame(numeric=c(1,2,3,4,5,6,7,8,9,10), string=c("a", "a", "b", "b", "c", "d", "d", "e", "d", "f"))
print(df)
numeric string
1        1      a
2        2      a
3        3      b
4        4      b
5        5      c
6        6      d
7        7      d
8        8      e
9        9      d
10      10      f

它具有一个数字变量和一个字符串变量。现在,我想创建另一个数据框,其中的字符串变量仅显示唯一值“ a”,“ b”,“ c”,“ d”,“ e”,“ f”的列表,数字变量为上一个数据帧中的数值之和的结果,导致该数据帧:

print(new_df)
numeric string
1        3      a
2        7      b
3        5      c
4       22      d
5        8      e
6       10      f

这可以使用for循环来完成,但是在大型数据集中效率不高,我更喜欢其他选项。我尝试使用dplyr包,但没有得到预期的结果:

library(dplyr)
> df %>% group_by(string) %>% summarize(result = sum(numeric))
result
1     55

2 个答案:

答案 0 :(得分:4)

这可能是plyr中屏蔽功能的问题(summarise/mutate中也有plyr个函数)。我们可以从summarise

中明确指定dplyr
library(dplyr)
df %>% 
    group_by(string) %>%
    dplyr::summarise(numeric = sum(numeric))

答案 1 :(得分:0)

您可以执行此操作而无需使用tapplyaggregate加载任何额外的软件包。