lag/lead R 中的整个数据框
lag/lead entire dataframe in R
我很难领先或落后于整个数据帧。我能做的是通过以下尝试移动各个列,但不是全部:
require('DataCombine')
df_l <- slide(df, Var = var1, slideBy = -1)
使用 colnames(x_ret_mon) 作为 Var 不起作用,我被告知在数据框中找不到变量名称。
此尝试将列向右移动而不是向下移动:
df_l<- dplyr::lag(df)
这只会为滞后变量创建新变量,但我不知道如何有效地删除旧的非滞后值:
df_l<-shift(df, n=1L, fill=NA, type=c("lead"), give.names=FALSE)
使用 dplyr::mutate_all
将滞后或引导应用于所有列。
df = data.frame(a = 1:10, b = 21:30)
dplyr::mutate_all(df, lag)
a b
1 NA NA
2 1 21
3 2 22
4 3 23
5 4 24
6 5 25
7 6 26
8 7 27
9 8 28
10 9 29
我不明白在 data.frame
中滞后 所有 列的意义。这不就相当于 rbind
将 NA
行添加到原始 data.frame
(减去最后一行)吗?
df = data.frame(a = 1:10, b = 21:30)
rbind(NA, df[-nrow(df), ]);
# a b
#1 NA NA
#2 1 21
#3 2 22
#4 3 23
#5 4 24
#6 5 25
#7 6 26
#8 7 27
#9 8 28
#10 9 29
所有列的前导也类似。
更多选择
data.frame(lapply(df, lag))
require(purrr)
map_df(df, lag)
如果你的数据是 data.table
你可以做
require(data.table)
as.data.table(shift(df))
或者,如果您要覆盖 df
df[] <- lapply(df, lag) # Thanks Moody
require(magrittr)
df %<>% map_df(lag)
我很难领先或落后于整个数据帧。我能做的是通过以下尝试移动各个列,但不是全部:
require('DataCombine')
df_l <- slide(df, Var = var1, slideBy = -1)
使用 colnames(x_ret_mon) 作为 Var 不起作用,我被告知在数据框中找不到变量名称。
此尝试将列向右移动而不是向下移动:
df_l<- dplyr::lag(df)
这只会为滞后变量创建新变量,但我不知道如何有效地删除旧的非滞后值:
df_l<-shift(df, n=1L, fill=NA, type=c("lead"), give.names=FALSE)
使用 dplyr::mutate_all
将滞后或引导应用于所有列。
df = data.frame(a = 1:10, b = 21:30)
dplyr::mutate_all(df, lag)
a b
1 NA NA
2 1 21
3 2 22
4 3 23
5 4 24
6 5 25
7 6 26
8 7 27
9 8 28
10 9 29
我不明白在 data.frame
中滞后 所有 列的意义。这不就相当于 rbind
将 NA
行添加到原始 data.frame
(减去最后一行)吗?
df = data.frame(a = 1:10, b = 21:30)
rbind(NA, df[-nrow(df), ]);
# a b
#1 NA NA
#2 1 21
#3 2 22
#4 3 23
#5 4 24
#6 5 25
#7 6 26
#8 7 27
#9 8 28
#10 9 29
所有列的前导也类似。
更多选择
data.frame(lapply(df, lag))
require(purrr)
map_df(df, lag)
如果你的数据是 data.table
你可以做
require(data.table)
as.data.table(shift(df))
或者,如果您要覆盖 df
df[] <- lapply(df, lag) # Thanks Moody
require(magrittr)
df %<>% map_df(lag)