R数据表-如何在组中使用上一行的值 [英] R Data table - how to use previous row value within group

查看:38
本文介绍了R数据表-如何在组中使用上一行的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望按组计算当前行和上一行之间的差异.

I wish to calculate the difference between the current row and previous row, by groups.

x = data.table(a=c(15, 25, 10, 12), b = c(1,1,2,2))
> x
    a b
1: 15 1
2: 25 1
3: 10 2
4: 12 2
> x[, c:= a - c(NA, a[.I-1]), by=b]
Warning messages:
1: In a - c(NA, a[.I - 1]) :
  longer object length is not a multiple of shorter object length
2: In `[.data.table`(x, , `:=`(c, a - c(NA, a[.I - 1])), by = b) :
  RHS 1 is length 3 (greater than the size (2) of group 2). The last 1 element(s) will be discarded.

我希望获得的是:

> x
    a b  c
1: 15 1 NA
2: 25 1 10
3: 10 2 NA
4: 12 2  2

推荐答案

#Using development version of data.table    

x[,value:=a-shift(a,1,type="lag"),by=b]
    a b value
1: 15 1    NA
2: 25 1    10
3: 10 2    NA
4: 12 2     2

这篇关于R数据表-如何在组中使用上一行的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆