我正尝试在数据框中添加一列,以计算序列运行的次数-在这种情况下,几个月的时间最多为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的序列数。此计数器将从实际年份列偏移一个月。在此reprex中,对于前11行(month_lag从2变为12),我希望year_counter为1。当month_lag在第12行中重置为1时,year_counter应该增加为2,并且每次month_lag运行时继续加价最多12点,并从1开始。如果可能,dplyr解决方案将是很好的选择。
答案 0 :(得分:1)
只要None
为1,我们就可以增加一个计数器,可以使用month_lag
cumsum
或在基数
中library(dplyr)
df %>% mutate(year_lag = cumsum(month_lag == 1) + 1)
# year.reprex month.reprex month_lag year_lag
# <int> <int> <dbl> <dbl>
# 1 1982 1 2 1
# 2 1982 2 3 1
# 3 1982 3 4 1
# 4 1982 4 5 1
# 5 1982 5 6 1
# 6 1982 6 7 1
# 7 1982 7 8 1
#....