【发布时间】:2021-12-26 06:00:03
【问题描述】:
假设我有一个如下数据框:
library(tidyverse)
df <- tibble(x = c(1,2,3), y = c(4,5,6))
# A tibble: 3 x 2
x y
<dbl> <dbl>
1 1 4
2 2 5
3 3 6
我想移动一列,添加一列,例如:
# A tibble: 3 x 3
x y shifted_x
<dbl> <dbl> <dbl>
1 1 4 NA
2 2 5 1
3 3 6 2
基本上,我想使用时间序列,所以我想获取以前的值并将它们用作特征。在python 我知道我能做到:
for i in range(1,11):
df[f'feature_{i}']=df['sepal_length'].shift(i)
其中df 是pandas 数据框。
在R 中执行此操作的任何等效代码?
【问题讨论】:
-
在`data.table`
setDT(df)[, shifted_x := shift(x)]dplyrdf <- df %>% mutate(shifted_x = lag(x))或shift中有lag -
在 python 中你不使用 for 循环。
df['shifted_x'] = df.sepal_length.shift()完美运行。在 R 中,看看下面给出的答案。