从前一行R减去

Son*_*ein 5 r dataframe

我有一个像这样的数据帧:

df <- data.frame(start=c(5,4,2),end=c(2,6,3))

start end
    5   2
    4   6
    2   3
Run Code Online (Sandbox Code Playgroud)

我想要以下结果:

start end diff
    5   2 
    4   6    1
    2   3   -1
Run Code Online (Sandbox Code Playgroud)

基本上它是:

end[2] (second row) - start[1] = 6-5=1

end[3] - start[2] = 3-4 = -1

在R中这样做的好方法是什么?

小智 11

只需一个简单的向量减法即可

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
Run Code Online (Sandbox Code Playgroud)