0

以下 (CSV) 数据集在 2000 年 7 月 1 日到 2014 年 12 月 31 日之间按天计算了 3133 行费用:

head(d_exp_0014)
2000    7   6   792078.595  9
2000    7   7   140065.5    9
2000    7   11  190553.2    9
2000    7   12  119208.65   9
2000    7   16  1068156.293 9
2000    7   17  0           9
2000    7   21  457828.8033 9
2000    7   26  661445.0775 9
2000    7   28  211122.82   9
2000    8   2   273575.1733 8

这里的列是年、月、日、费用和计数(每个月有多少天有费用)。

我正在尝试预测到 2015 年底,并且需要处理这些凌乱的日期列,以便我可以使用 dplyr 对 xts (?) 对象进行切片和切块。ISOdate 和 as.Date 函数抛出此错误:

> exp <- data.frame(data = d_exp_0014, Date = as.Date(paste(Year, Month, Day), format = "m%/d%/Y%"), Amount = Amount, Count = Count, t = c(1:3133))
Error in data.frame(data = d_exp_0014, Date = as.Date(paste(Year, Month,  : 
  arguments imply differing number of rows: 3133, 3134
> length(d_exp_0014$Year)
[1] 3133
> length(d_exp_0014$Month)
[1] 3133
> length(d_exp_0014$Day)
[1] 3133

我究竟做错了什么?我是否应该在 2000 年 7 月 1 日和 2014 年 12 月 31 日之间构建一个包含 5296 个连续日期的向量,并将我的 3133 行观察结果合并到该表中(从而在金额列中有效插入“0”没有付款)?

4

1 回答 1

1

几个错误(但不是来自paste):我猜你被教导使用attach. 这可能是这个特定错误的来源。开始

detach(d_exp_0014)
d_exp_0014 <- cbind(d_exp_0014, 
                    myDate = with(d_exp_0014,
                                as.Date(paste(Year, Month, Day, sep="/"), 
                                     format = "%Y/%m/%d") # note % first then letter
                                  )
                    )

然后,您可以根据需要添加更多列。

于 2015-02-17T21:24:41.253 回答