【问题标题】:A loop in R to go through variable names and create new lagged variablesR 中的循环遍历变量名并创建新的滞后变量
【发布时间】:2020-07-08 18:21:57
【问题描述】:

您好,我正在尝试创建基于循环中现有变量的新滞后变量。这是我失败的尝试:

varlist = c("retail", "grocery", "parks", "transit", "work", "residential")
for (x in varlist) {
  cases %<>% 
    mutate(x7 = lag(x,n=7L))
}

代码将在哪里生成“retail7”、“grocery7”等。问题似乎源于当我说 X7 时,我的意思是“retail7”或另一个变量 7,但它不知道该怎么做,因为它是字符串什么的

谢谢

【问题讨论】:

  • 这就是问题中涉及的所有数据吗?
  • 数据为面板时间序列数据。我还有状态和日期等变量

标签: r loops


【解决方案1】:

您不需要循环来实现这一点。使用一些随机示例数据,这可以通过dplyr::mutate_at 实现,如下所示:

library(dplyr)

cases <- data.frame(state = rep(c("A", "B"), 10), retail = runif(20), grocery = runif(20), parks = runif(20), transit = runif(20), work = runif(20), residential = runif(20) )

cases <- cases %>%
  arrange(state) %>% 
  group_by(state) %>% 
  mutate_at(vars("retail", "grocery", "parks", "transit", "work", "residential"), list(`7` = ~ lag(.x, n = 7L)))
head(cases)   
#> # A tibble: 6 x 13
#> # Groups:   state [1]
#>   state retail grocery parks transit  work residential retail_7 grocery_7
#>   <chr>  <dbl>   <dbl> <dbl>   <dbl> <dbl>       <dbl>    <dbl>     <dbl>
#> 1 A     0.113   0.989  0.805   0.937 0.966       0.800       NA        NA
#> 2 A     0.981   0.755  0.274   0.491 0.191       0.897       NA        NA
#> 3 A     0.763   0.0676 0.780   0.249 0.363       0.592       NA        NA
#> 4 A     0.758   0.905  0.236   0.556 0.202       0.842       NA        NA
#> 5 A     0.0250  0.681  0.868   0.204 0.194       0.692       NA        NA
#> 6 A     0.592   0.404  0.509   0.478 0.692       0.128       NA        NA
#> # ... with 4 more variables: parks_7 <dbl>, transit_7 <dbl>, work_7 <dbl>,
#> #   residential_7 <dbl>

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2021-01-15
    相关资源
    最近更新 更多