我正在从具有日期,订单,金额等字段的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 = TRUEexpand.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/

10-11 09:00