r - 聚合/减去两个变量,行

时间:2016-07-04 03:02:58

标签: r aggregate rows

我使用聚合函数来计算两个变量的每次观察的差异,所以不知何故这样(我希望将结果保存为新变量):

DATA1

         Group            Points_Attempt1        Points_Attempt2
  1        1                    10                      5
  2        1                    34                      23
  3        1                    50                      5
  4        1                    10                      12
  5        2                    11                      21
  6        2                    23                      23 
  7        2                    32                      10
  8        2                    12                      10

我能够做到这样的事情:

aggregate(data1[c("Points_Attempt1","Points_Attempt2")],list(data1$group),diff)

但是我希望它能用于每一个观察,我现在不想选择观察结果,所以不知何故行数(这里是1-8)。

所以我正在搜索以下第四列(差异),然后我想将其作为新变量安全:

        Group            Points_Attempt1        Points_Attempt2   Difference
  1        1                    10                      5               5
  2        1                    34                      23              11
  3        1                    50                      5               45
  4        1                    10                      12              -2
  5        2                    11                      21              -10
  6        2                    23                      23               0
  7        2                    32                      10               22
  8        2                    12                      10               2

如果有人可以帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我们可以使用mutate_each

library(dplyr)
data1 %>% 
     group_by(Group) %>%
     mutate_each(funs(c(NA, diff(.))), 2:3)

或者如果我们需要在变量之间减去,

data1 %>%
        mutate(Difference = Points_Attemp1 - Points_Attemp2)