我正在从具有日期,订单,金额等字段的CSV文件加载data.table
。
输入文件有时没有所有日期的数据。例如,如下所示:
> NADayWiseOrders
date orders amount guests
1: 2013-01-01 50 2272.55 149
2: 2013-01-02 3 64.04 4
3: 2013-01-04 1 18.81 0
4: 2013-01-05 2 77.62 0
5: 2013-01-07 2 35.82 2
在上面的03-Jan和06-Jan中没有任何条目。
想要用默认值(例如,订单,金额等为零)填充缺失的条目,还是向前转发最后一个值(例如,03-Jan将重用02-Jan值,而06-Jan将重用05-Jan值等。)
用此类默认值填充此类缺失日期数据的空白的最佳/最佳方法是什么?
答案here建议在缺少工作日时使用
allow.cartesian = TRUE
和expand.grid
-它可能适用于工作日(因为它们只有7个工作日)-但不确定这是否也是处理日期的正确方法,特别是如果我们正在处理多年数据。 最佳答案
不知道它是否最快,但是如果数据中没有NA
,它将起作用:
# just in case these aren't Dates.
NADayWiseOrders$date <- as.Date(NADayWiseOrders$date)
# all desired dates.
alldates <- data.table(date=seq.Date(min(NADayWiseOrders$date), max(NADayWiseOrders$date), by="day"))
# merge
dt <- merge(NADayWiseOrders, alldates, by="date", all=TRUE)
# now carry forward last observation (alternatively, set NA's to 0)
require(xts)
na.locf(dt)
关于r - 填写data.table缺失日期的最快方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22956803/