作者:里 | 来源:互联网 | 2023-05-25 23:11
虽然我发现了几个类似的问题,但我找不到基本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文件加载数据该怎么办?我必须将此数据转换为数据框吗?
1> akrun..:
data.table_1.9.5引入了新函数shift
,默认情况下是type='lag'
和n=1L
.如果需要更改,可以指定这些参数. setDT
转换data.frame
为data.table
,:=
根据条件(y/shift(y)...
)创建一个新列()
library(data.table)
setDT(df)[, new.col := y/shift(y) - 1]
或者在基地R(来自@David Arenburg的评论)
transform(df, new.col=c(NA,y[-1]/y[-nrow(df)]-1))