请参阅R中的相对行

Tom*_*Tom 1 r

我知道答案必须在那里,但我无法弄清楚如何说出问题.

我想计算data.frame中值之间的差异.

由此:

f <- data.frame(year=c(2004, 2005, 2006, 2007), value=c(8565, 8745, 8985, 8412))

  year value
1 2004  8565
2 2005  8745
3 2006  8985
4 2007  8412
Run Code Online (Sandbox Code Playgroud)

对此:

  year value diff
1 2004  8565   NA
2 2005  8745  180
3 2006  8985  240
4 2007  8412 -573
Run Code Online (Sandbox Code Playgroud)

(即当年的价值减去上一年的价值)

但我不知道如何在另一行创建的行中得到结果.有帮助吗?

谢谢,汤姆

Sha*_*ane 11

有很多不同的方法可以做到这一点,但这里有一个:

f[, "diff"] <- c(NA, diff(f$value))
Run Code Online (Sandbox Code Playgroud)

更一般地说,如果要引用相对行,可以lag()直接使用或直接使用索引:

f[-1,"diff"] <- f[-1, "value"] - f[-nrow(f), "value"]
Run Code Online (Sandbox Code Playgroud)