【发布时间】:2019-11-19 11:38:29
【问题描述】:
我试图弄清楚如何将属于category a 和b 的values 与file 相加,但也要保留原始数据。
library(dplyr)
df <- data.frame(ID = 1:20, values = runif(20), category = rep(letters[1:5], 4), file = as.factor(sort(rep(1:5, 4))))
ID values category file
1 1 0.65699229 a 1
2 2 0.70506478 b 1
3 3 0.45774178 c 1
4 4 0.71911225 d 1
5 5 0.93467225 e 1
6 6 0.25542882 a 2
7 7 0.46229282 b 2
8 8 0.94001452 c 2
9 9 0.97822643 d 2
10 10 0.11748736 e 2
11 11 0.47499708 a 3
12 12 0.56033275 b 3
13 13 0.90403139 c 3
14 14 0.13871017 d 3
15 15 0.98889173 e 3
16 16 0.94666823 a 4
17 17 0.08243756 b 4
18 18 0.51421178 c 4
19 19 0.39020347 d 4
20 20 0.90573813 e 4
这样
-
df[1,2]将添加到df[2,2]到类别'ab'的文件 1 -
df[6,2]将添加到df[7,2]到类别'ab'用于文件 2 - 等。
到目前为止,我有这个:
df %>%
filter(category %in% c('a' , 'b')) %>%
group_by(file) %>%
summarise(values = sum(values))
问题
我想将求和值的类别更改为“ab”,并将其附加到同一管道中的原始数据帧中。
期望的输出:
ID values category file
1 1 0.65699229 a 1
2 2 0.70506478 b 1
3 3 0.45774178 c 1
4 4 0.71911225 d 1
5 5 0.93467225 e 1
6 6 0.25542882 a 2
7 7 0.46229282 b 2
8 8 0.94001452 c 2
9 9 0.97822643 d 2
10 10 0.11748736 e 2
11 11 0.47499708 a 3
12 12 0.56033275 b 3
13 13 0.90403139 c 3
14 14 0.13871017 d 3
15 15 0.98889173 e 3
16 16 0.94666823 a 4
17 17 0.08243756 b 4
18 18 0.51421178 c 4
19 19 0.39020347 d 4
20 20 0.90573813 e 4
21 21 1.25486225 ab 1
22 22 1.87216325 ab 2
23 23 1.36548126 ab 3
【问题讨论】:
-
也许 setDT(df)[category %chin% c('a','b'), summed:=sum(values), file]
-
@chinsoon12
%chin%实际上在这里不起作用(假设默认 stringsAsFactor 选项),因为类别是一个因素而不是字符。不过,您应该将此作为答案发布 -
从电话评论,没有测试所以最好不要发布