在R中以滚动方式复制向量
假设我想运行一个回归,其中DV的数据输入应该以滚动方式进行。为了简化这个过程,我首先要“复制”这个向量,从而相应地滚动观察值。例如,请参见下面的数据结构在R中以滚动方式复制向量,r,vector,regression,rolling-computation,R,Vector,Regression,Rolling Computation,假设我想运行一个回归,其中DV的数据输入应该以滚动方式进行。为了简化这个过程,我首先要“复制”这个向量,从而相应地滚动观察值。例如,请参见下面的数据结构 # libraries # library(dplyr) # reproducible data # df1 <- tibble(ID = as.factor(rep(c(1, 2), each = 40)), YEAR = rep(rep(c(2001:2010), each = 4), 2),
# libraries #
library(dplyr)
# reproducible data #
df1 <- tibble(ID = as.factor(rep(c(1, 2), each = 40)),
YEAR = rep(rep(c(2001:2010), each = 4), 2),
QTR = rep(c(1:4), 20),
DV = rnorm(80))
df2 <- tibble(ID = as.factor(rep(c(1, 2), each = 120)),
YEAR = rep(rep(c(2005:2010), each = 20), 2),
IV = rnorm(240))
#库#
图书馆(dplyr)
#可再现数据
df1我们可以使用
v1 <- c(1, seq(5, nrow(df1), by = 4))
v2 <- seq(20, nrow(df1), by = 4)
i1 <- seq_len(min(c(length(v1), length(v2))))
lst1 <- map2(v1[i1], v2[i1], ~ df1 %>%
slice(.x:.y))
@Oscar是固定的,带有i1
(检查第三行)
v11 <- seq(1, nrow(df2), by = 20)
v22 <- seq(20, nrow(df2), by = 20)
i2 <- seq_len(min(c(length(v11), length(v22))))
lst2 <- map2(v11[i2], v22[i2], ~ df2 %>%
slice(.x:.y))
df1 %>%
group_split(ID) %>%
map(~ {
v1 <- c(1, seq(5, nrow(.x), by = 4))
v2 <- seq(20, nrow(.), by = 4)
i1 <- seq_len(min(c(length(v1), length(v2))))
map2(v1[i1], v2[i1], function(x, y) .x %>%
slice(x:y))
})