我有一个data.frame,如下所示:
df <- data.frame(
DateTime = seq(ISOdate(2015, 1, 1, 0), by = 15 * 60, length.out = 35040),
kWh = abs(rnorm(35040, mean = 550, sd = 50))
)
和一个矢量如:
dates <- as.Date(c("2015-01-15", "2015-02-17", "2015-03-14", "2015-04-16",
"2015-05-16", "2015-06-18", "2015-07-15", "2015-08-15",
"2015-09-16", "2015-10-13", "2015-11-17", "2015-12-17"))
我想要做的是向df
添加一列,指示每个条目归因于哪个会计期间。例如,从数据开头到2015-01-14最后一个条目的每个条目都将被赋予201501的值,因为它们归因于2015年1月的会计期间。同样,从2015-01-15到2015-02-16的最后一个值的每个值都将被赋予201502的值。
我希望有一个使用lubridate
的解决方案,因为我不想转换为基于xts
或zoo
的对象。性能也有些重要,因为我必须为几百个这样的数据集执行此操作。
答案 0 :(得分:0)
我找到了答案,我没有意识到cut
也适用于POSIXct
个对象。
df$Period <- cut(df$DateTime, breaks = as.POSIXct(dates),
labels = 201502:201512)
将dates
转换为POSIXct
对象非常重要,否则cut
会抛出一条错误消息,指出它们没有正确格式化。