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