![](/img/trans.png)
[英]Loop in R through variable names with values as endings and create new variables from the result
[英]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.