【发布时间】:2021-09-11 21:04:05
【问题描述】:
我有以下数据:
test <- tibble(id = 1:4, name = letters[1:4], revenue = seq(100, 400, 100))
由此,我创建了滞后变量:
test_lagged <-
test %>%
mutate(
revenue_lag_1 = lag(revenue, 1),
revenue_lag_2 = lag(revenue, 2),
revenue_lag_3 = lag(revenue, 3),
across(
contains("revenue"),
~replace_na(., 0)
)
)
我已经有一种方法可以帮助我动态地执行上述步骤,这样我就可以在函数中指定 om 滞后和滞后变量的数量。但是,下一步,我只设法显式实现(通过显式映射每一列):
test_lagged %>%
mutate(
any_previous_zero_revenue = case_when(
revenue_lag_1 == 0 |
revenue_lag_2 == 0 |
revenue_lag_3 == 0 ~ TRUE,
TRUE ~ FALSE
)
)
我想要的是能够通过使用“any_of”、“all_of”、contains()、starts_with() 或类似的东西在 case_when 函数中动态应用它。
首先,我想说,对于包含/以“revenue_”开头的所有列,检查这些变量(对于给定行)是否“any_of”== 0。这样我可以动态创建尽可能多的滞后变量我想不必更改 case_when 函数。
【问题讨论】: