Как увеличить месяц подряд на основе месяца в предыдущем ряду? - PullRequest
0 голосов
/ 04 января 2019

У меня есть фрейм данных, в котором есть столбец значений и столбец «месяц-год».В первой строке Августа 2018 написано для столбца месяца год.Существует ли вероятность того, что следующие строки, имеющие значение в столбце значений, будут автоматически заполнены следующим месяцем соответственно?Итак, этот второй ряд заполнен сентябрем 2018 года, а третий - октябрем 2018 года и так далее?

Фактический результат:

value  month
645    Aug 2018
589    NA
465    NA
523    NA
632    NA
984    NA

Ожидаемые результаты:

value  month
645    Aug 2018
589    Sep 2018
465    Okt 2018
523    Nov 2018
632    Dez 2018
984    Jan 2019

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Мы можем сделать это с as.yearmon из zoo.Используемая версия пакета 1.8.3

library(zoo)
df$month <- head(as.yearmon(df$month[1]) + c(0, seq_len(nrow(df)))/12, -1)

df
#   value    month
#1   645 Aug 2018
#2   589 Sep 2018
#3   465 Oct 2018
#4   523 Nov 2018
#5   632 Dec 2018
#6   984 Jan 2019

data

df <- structure(list(value = c(645L, 589L, 465L, 523L, 632L, 984L), 
month = c("Aug 2018", NA, NA, NA, NA, NA)), class = "data.frame", 
 row.names = c(NA, -6L))
0 голосов
/ 04 января 2019

В базе R вы можете сделать что-то вроде этого, чтобы создать ежемесячную seq uence

df$month <- format(seq(as.Date(paste("01", df$month[1]), "%d %b %Y"),
                             length.out = nrow(df), by = "month"), "%b %Y")

df
#  value    month
#1   645 Aug 2018
#2   589 Sep 2018
#3   465 Oct 2018
#4   523 Nov 2018
#5   632 Dec 2018
#6   984 Jan 2019

Важное предположение, которое необходимо отметить: у вас есть только одно значение month, которое присутствует впервая строка, и вы хотите заменить все другие значения месяца, увеличивая на 1 месяц от предыдущей записи.

...