我知道答案必须在那里,但我无法弄清楚如何说出问题。
我想计算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
(即当年的价值减去上一年的价值)
但我不知道如何在另一行创建的行中生成结果。有什么帮助吗?
谢谢, 汤姆
答案 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)]