dplyr:在增加数据帧的同时添加多个延迟
我希望添加多个滞后数据,但我希望整个数据都滞后,而不是被dplyr:在增加数据帧的同时添加多个延迟,r,dplyr,R,Dplyr,我希望添加多个滞后数据,但我希望整个数据都滞后,而不是被data\u帧的现有高度截断 下面是一些创建多个滞后(HT:)的基本代码: 这使得: > df_foo_lag # A tibble: 12 x 8 x y `x_(Lag 1)` `y_(Lag 1)` `x_(Lag 2)` `y_(Lag 2)` `x_(Lag 3)` `y_(Lag 3)` <int> <dbl> <int> <
data\u帧的现有高度截断
下面是一些创建多个滞后(HT:)的基本代码:
这使得:
> df_foo_lag
# A tibble: 12 x 8
x y `x_(Lag 1)` `y_(Lag 1)` `x_(Lag 2)` `y_(Lag 2)` `x_(Lag 3)` `y_(Lag 3)`
<int> <dbl> <int> <dbl> <int> <dbl> <int> <dbl>
1 1 0.847 NA NA NA NA NA NA
2 2 0.966 1 0.847 NA NA NA NA
3 3 0.231 2 0.966 1 0.847 NA NA
4 4 0.324 3 0.231 2 0.966 1 0.847
5 5 0.350 4 0.324 3 0.231 2 0.966
6 6 0.750 5 0.350 4 0.324 3 0.231
7 7 0.415 6 0.750 5 0.350 4 0.324
8 8 0.377 7 0.415 6 0.750 5 0.350
9 9 0.474 8 0.377 7 0.415 6 0.750
10 10 0.108 9 0.474 8 0.377 7 0.415
11 11 0.398 10 0.108 9 0.474 8 0.377
12 12 0.0450 11 0.398 10 0.108 9 0.474
这就是我想要的:
# A tibble: 15 x 8
x y `x_(Lag 1)` `y_(Lag 1)` `x_(Lag 2)` `y_(Lag 2)` `x_(Lag 3)` `y_(Lag 3)`
<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 0.847 NA NA NA NA NA NA
2 2 0.966 1 0.847 NA NA NA NA
3 3 0.231 2 0.966 1 0.847 NA NA
4 4 0.324 3 0.231 2 0.966 1 0.847
5 5 0.350 4 0.324 3 0.231 2 0.966
6 6 0.750 5 0.350 4 0.324 3 0.231
7 7 0.415 6 0.750 5 0.350 4 0.324
8 8 0.377 7 0.415 6 0.750 5 0.350
9 9 0.474 8 0.377 7 0.415 6 0.750
10 10 0.108 9 0.474 8 0.377 7 0.415
11 11 0.398 10 0.108 9 0.474 8 0.377
12 12 0.0450 11 0.398 10 0.108 9 0.474
13 NA NA 12 0.768 11 0.307 10 0.299
14 NA NA NA NA 12 0.768 11 0.307
15 NA NA NA NA NA NA 12 0.768
#一个tible:15 x 8
x y`x_(滞后1)`y_(滞后1)`x_(滞后2)`y_(滞后2)`x_(滞后3)`y_(滞后3)`
1010.847NA NA NA NA
2 0.966 1 0.847纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳
3 0.231 2 0.966 1 0.847 NA NA
4 4 0.324 3 0.231 2 0.966 1 0.847
5 5 0.350 4 0.324 3 0.231 2 0.966
6 6 0.750 5 0.350 4 0.324 3 0.231
7 7 0.415 6 0.750 5 0.350 4 0.324
8 8 0.377 7 0.415 6 0.750 5 0.350
9 9 0.474 8 0.377 7 0.415 6 0.750
10 10 0.108 9 0.474 8 0.377 7 0.415
11 11 0.398 10 0.108 9 0.474 8 0.377
12 12 0.0450 11 0.398 10 0.108 9 0.474
13 NA NA 12 0.768 11 0.307 10 0.299
14 NA NA 12 0.768 11 0.307
15钠12钠0.768
实现这一目标的规划方法是什么
谢谢。一个选项是
library(tidyverse)
library(readr)
l1 <- map(c(0, lags), ~ df_foo %>%
summarise_all(list(~ list(c(rep(NA_real_, .x), .)))) %>%
unnest)
res <- do.call(cbind.fill, c(l1, fill = NA))
names(res)[-(1:2)] <- paste(names(df_foo),
rep(lag_names, each = ncol(df_foo)), sep="_")
库(tidyverse)
图书馆(readr)
l1%
总结所有内容(列表(~list(c)(代表(不真实),))%>%
(最新)
res一个选项是
library(tidyverse)
library(readr)
l1 <- map(c(0, lags), ~ df_foo %>%
summarise_all(list(~ list(c(rep(NA_real_, .x), .)))) %>%
unnest)
res <- do.call(cbind.fill, c(l1, fill = NA))
names(res)[-(1:2)] <- paste(names(df_foo),
rep(lag_names, each = ncol(df_foo)), sep="_")
库(tidyverse)
图书馆(readr)
l1%
总结所有内容(列表(~list(c)(代表(不真实),))%>%
(最新)
res您可以在计算滞后之前简单地添加行:
# generate multiple lags
df_foo_lag = df_foo %>%
bind_rows(tibble(.rows = max(lags))) %>%
mutate_at(
vars("x", "y"),
funs_(lag_functions)
)
您只需在计算滞后之前添加行:
# generate multiple lags
df_foo_lag = df_foo %>%
bind_rows(tibble(.rows = max(lags))) %>%
mutate_at(
vars("x", "y"),
funs_(lag_functions)
)
谢谢--这是最适合我的上下文的答案。我刚刚修改了一点代码:发现tibble()
在创建没有内容的三行数据集时更易于使用谢谢--这是最适合我的上下文的答案。我刚刚修改了一点代码:发现tibble()
在创建没有内容的三行数据集时更易于使用