在R中的数据框中获得先前的观察结果

时间:2015-03-13 15:02:35

标签: r

我想在包含i th -1值的数据框中添加一个新列。我可以在for循环中执行此操作,但我想知道它有一种更简单的方法。我也想做其他滞后。 例如:

Price PrevPrice
23 NA
24 23
25 24
35 25


1 个答案:

答案 0 :(得分:2)

你可以做

library(dplyr)
mutate(df, PrevPrice=lag(Price))

或者

df$PrevPrice <- c(NA, df$Price[-nrow(df)])

如果您有多个列来获取lag,则另一个选项是data.table,您可以使用?shift默认情况下,typelag。对于多列,请在.SDcols中指定列索引(例如,此处为前2列)。

library(data.table) #data.table_1.9.5
setDT(df)[, paste0(names(df)[1:2], 'lag') := shift(.SD), .SDcols=1:2]