在 lag() 中将字符串作为列名传递
Passing string as column name in lag()
我需要使用函数 lag() 来获取数据框中的新列,但在循环中。因此,列名以字符串形式给出。当我这样做时,我只会得到 NA。请参阅下面的一个非常简化且可重现的示例。我删除了循环,因为它不相关。
df <-
data.frame(age = c(1, 2, 3),
value_2010 = c(10, 20, 30))
new_col_value <- "value_2010"
new_col_name <- "value_lag"
df_new_column <-
df%>%
mutate({{new_col_name}} := lag({{new_col_value}}))
这就是我想要的
这就是我得到的
您可以使用 !!
而不是 {{}}
df %>%
mutate(!!new_col_name := lag(!!as.symbol(new_col_value)))
age value_2010 value_lag
1 1 10 NA
2 2 20 10
3 3 30 20
我需要使用函数 lag() 来获取数据框中的新列,但在循环中。因此,列名以字符串形式给出。当我这样做时,我只会得到 NA。请参阅下面的一个非常简化且可重现的示例。我删除了循环,因为它不相关。
df <-
data.frame(age = c(1, 2, 3),
value_2010 = c(10, 20, 30))
new_col_value <- "value_2010"
new_col_name <- "value_lag"
df_new_column <-
df%>%
mutate({{new_col_name}} := lag({{new_col_value}}))
这就是我想要的
这就是我得到的
您可以使用 !!
而不是 {{}}
df %>%
mutate(!!new_col_name := lag(!!as.symbol(new_col_value)))
age value_2010 value_lag
1 1 10 NA
2 2 20 10
3 3 30 20