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

时间:2019-01-04 08:56:17

标签: r date increment

我有一个数据框,其中有一个值列和“月年”列。在第一行中,2018年8月写在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

2 个答案:

答案 0 :(得分:4)

在基数R中,您可以执行类似的操作来创建每月seq次。

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

答案 1 :(得分:3)

我们可以使用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

数据

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