Добавить подсчет столбцов повторений последовательности - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь добавить столбец к фрейму данных, который подсчитывает, сколько раз была пройдена последовательность - в этом случае месяцы, которые доходят до 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.Этот счетчик будет смещен от столбца фактического года на один месяц.В этом представлении для первых одиннадцати строк (month_lag идет от 2 до 12) я хочу, чтобы year_counter равнялся 1. Когда month_lag сбрасывается до 1 в строке 12, year_counter должен увеличиваться до 2, и продолжать тикать каждый раз при запуске month_lagдо 12 и начинается с 1. Решение dplyr было бы здорово, если это возможно.

1 Ответ

0 голосов
/ 06 февраля 2019

Мы можем увеличивать счетчик всякий раз, когда month_lag равен 1, что может быть достигнуто с помощью 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
#....

Или в базе R

df$year_lag <- cumsum(df$month_lag == 1) + 1
...