我需要为每个id组添加一个新行,其中key =“n”,值为total - a + b
x <- data_frame( id = c(1,1,1,2,2,2,2),
key = c("a","b","total","a","x","b","total"),
value = c(1,2,10,4,1,3,12) )
# A tibble: 7 × 3
id key value
<dbl> <chr> <dbl>
1 1 a 1
2 1 b 2
3 1 total 10
4 2 a 4
5 2 x 1
6 2 b 3
7 2 total 12
在此示例中,新行应为
1 n 7
2 n 5
我尝试获得a + b小计并将其与总计数相加以获得差异,但在使用9个dplyr动词后,我似乎走错了方向。感谢。
答案 0 :(得分:3)
这不是一个加入,它只是绑定新行:
Report
答案 1 :(得分:1)
这是使用data.table,绑定行的方式,如Gregor的答案:
library(data.table)
setDT(x)
dcast(x, id ~ key)[, .(id, key = "n", value = total - a - b)][, rbind(.SD, x)][order(id)]
id key value
1: 1 n 7
2: 1 a 1
3: 1 b 2
4: 1 total 10
5: 2 n 5
6: 2 a 4
7: 2 x 1
8: 2 b 3
9: 2 total 12