我有一个小标题,想在其中滞后/引导各个列并检查它们的相关性。 当前,对于每个列名,我都必须有一个单独的函数来执行超前/滞后和相关函数。 有没有一种方法可以将列名作为变量传递,然后将该变量与lag / lead一起使用
#This is what I have tried unsuccessfully so far
library(janitor)
library(tidyverse)
(x <- mtcars %>%
as_tibble())
var_to_lag <- "carb"
# Tried without success
x %>% mutate(lag_var = lag(!!var_to_lag, 1))
x %>% mutate(lag_var = lag(contains(var_to_lag), 1))
x %>% mutate(lag_var = lag(vars(contains(var_to_lag)), 1))
x %>% mutate(lag_var = lag(vars(!!var_to_lag), 1))
有什么想法吗?
答案 0 :(得分:1)
我们可以使用mutate_at
接受字符串输入
library(dplyr)
x %>% mutate_at(vars(var_to_lag), list(lag_var = ~lag(.)))
我们也可以使用get
x %>% mutate(lag_var = lag(get(var_to_lag)))
或者首先将var_to_lag
转换为符号(sym
),然后求值(!!
)
x %>% mutate(lag_var = lag(!!sym(var_to_lag)))