繁体   English   中英

通过变量名在 R 到 go 中循环并创建新的滞后变量

[英]A loop in R to go through variable names and create new lagged variables

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

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

代码会生成“retail7”、“grocery7”等

谢谢

您不需要循环来实现这一点。 使用一些随机示例数据,这可以通过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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM