如何根据上一行中的月份连续增加一个月?

How to increment a month in a row based on the month in the previous row?

我有一个包含值列和 "month year" 列的数据框。在第一行 Aug 2018 是为 month year 列写的。是否有可能在值列中具有值的以下行分别自动填充下个月?那么第二行是 2018 年 9 月,第三行是 2018 年 10 月等等?

实际结果:

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

在 base R 中,你可以做这样的事情来创建每月 sequence

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 个月来替换月份的所有其他值。

我们可以用 zoo 中的 as.yearmon 来做到这一点。使用的包版本 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

数据

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))