使用dplyr

时间:2016-11-22 19:04:51

标签: r dplyr

我需要为每个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动词后,我似乎走错了方向。感谢。

2 个答案:

答案 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