首页 > 解决方案 > R:计算具有组引用的行中的值之间的差异

问题描述

这是我的df:

group value
1     10
1     20
1     25
2     5
2     10
2     15 

我现在想计算组的每个值与参考值之间的差异,参考值是组的第一行。更确切地说:

group value diff
1     10    NA # because this is the reference for group 1
1     20    10 # value[2] - value[1]
1     25    15 # value[3] - value[1]
2     5     NA # because this is the reference for group 2
2     10    5  # value[5] - value[4]
2     15    10 # value[6] - value[4]

我为上一行的不同分数找到了很好的答案(例如,dpylr 中的滞后函数,data.table 中的移位函数)。但是,我正在寻找一个固定的参考点,但我无法让它工作。

标签: r

解决方案


试试下面的代码

transform(
    df,
    Diff = ave(value, group, FUN = function(x) c(NA, diff(x)))
)

这使

  group value Diff
1     1    10   NA
2     1    20   10
3     1    25    5
4     2     5   NA
5     2    10    5
6     2    15    5

推荐阅读