【发布时间】:2019-02-06 15:02:52
【问题描述】:
我正在尝试向数据框中添加一列,用于计算序列已运行的次数——在本例中,最多为 12 个月。
我从月份和年份开始,但为了进行分析,我需要使用调整后的 month_lag 列。
year.reprex <- rep(1982:2015, each=12)
month.reprex <- rep(1:12, times=34)
df <- cbind(year.reprex, month.reprex) %>%
as_tibble() %>%
mutate(
month_lag = ifelse(month.reprex < 12, month.reprex+1, 1))
我想添加一个带有数字计数器的列,用于计算month_lag 运行到12 的次数。month_lag 的第一个值是2,所以我不能只计算1:12 的序列数。此计数器将从实际年份列偏移一个月。在这个表达式中,对于前 11 行(month_lag 从 2 到 12),我希望 year_counter 为 1。当第 12 行中的 month_lag 重置为 1 时,year_counter 应该增加到 2,并在每次 month_lag 运行时继续增加最多 12 并从 1 重新开始。如果可能的话,dplyr 解决方案会很棒。
【问题讨论】:
-
是的!我实际上在您的代码中需要
month_lag==1,所以year_lag在month_lag命中1 而不是12 时会上升——但这解决了它。谢谢!