我想在包含i th -1值的数据框中添加一个新列。我可以在for循环中执行此操作,但我想知道它有一种更简单的方法。我也想做其他滞后。 例如:
Price PrevPrice 23 NA 24 23 25 24 35 25
答案 0 :(得分:2)
你可以做
library(dplyr)
mutate(df, PrevPrice=lag(Price))
或者
df$PrevPrice <- c(NA, df$Price[-nrow(df)])
如果您有多个列来获取lag
,则另一个选项是data.table
,您可以使用?shift
默认情况下,type
为lag
。对于多列,请在.SDcols
中指定列索引(例如,此处为前2列)。
library(data.table) #data.table_1.9.5
setDT(df)[, paste0(names(df)[1:2], 'lag') := shift(.SD), .SDcols=1:2]