我有一个像这样的数据框:
df <- data.frame(start=c(5,4,2),end=c(2,6,3))
start end
5 2
4 6
2 3
我想要以下结果:
start end diff
5 2
4 6 1
2 3 -1
基本上是:
end[2] (second row) - start[1] = 6-5=1
和end[3] - start[2] = 3-4 = -1
在R中执行此操作的好方法是什么?
答案 0 :(得分:10)
只需简单的矢量减法就可以了
df$diff <- c(NA,df[2:nrow(df), 2] - df[1:(nrow(df)-1), 1])
start end diff
1 5 2 NA
2 4 6 1
3 2 3 -1
答案 1 :(得分:2)
library(data.table)
setDT(df)[,value:=end-shift(start,1,type="lag")]
start end value
1: 5 2 NA
2: 4 6 1
3: 2 3 -1