请考虑以下数据框:
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
答案 0 :(得分:4)
这可能是plyr
中屏蔽功能的问题(summarise/mutate
中也有plyr
个函数)。我们可以从summarise
dplyr
library(dplyr)
df %>%
group_by(string) %>%
dplyr::summarise(numeric = sum(numeric))
答案 1 :(得分:0)
您可以执行此操作而无需使用tapply
或aggregate
加载任何额外的软件包。