请参阅R中的相对行

时间:2010-06-28 13:59:11

标签: 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

到此:

  year value diff
1 2004  8565   NA
2 2005  8745  180
3 2006  8985  240
4 2007  8412 -573

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

但我不知道如何在另一行创建的行中生成结果。有什么帮助吗?

谢谢, 汤姆

3 个答案:

答案 0 :(得分:11)

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

f[, "diff"] <- c(NA, diff(f$value))

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

f[-1,"diff"] <- f[-1, "value"] - f[-nrow(f), "value"]

答案 1 :(得分:1)

使用diff功能

f <- cbind(f, c(NA, diff(f[,2])))

答案 2 :(得分:1)

如果year列未排序,则您可以使用match

f$diff <- f$value - f$value[match(f$year-1, f$year)]