R 的同比百分比变化

year-over-year percentage change in R

虽然我发现了几个类似的问题,但我无法在 base R 中找到解决我的问题的简单方法。 我想计算一组数据(此处为 y 值)的同比百分比变化,并将此 "Delta" 系列作为新列添加到我的数据框中。

例如:

>x = c(2000,2001,2002,2003,2004,2005,2006)   
>y = c(100,104,106,108,112,115,121)   
>df = data.frame(x,y)

如果我通过读取 .csv 文件加载数据怎么办?我必须将此数据转换为数据框吗?

data.table_1.9.5 引入了新函数 shift,默认情况下为 type='lag'n=1L。如果需要更改,您可以指定这些参数。 setDTdata.frame 转换为 data.table,根据条件 (y/shift(y)...)

创建一个新列 (:=)
library(data.table)
setDT(df)[, new.col := y/shift(y) - 1]

或者在 base R 中(来自@David Arenburg 的评论)

transform(df, new.col=c(NA,y[-1]/y[-nrow(df)]-1))