2

我有两个要附加在一起的 data.frames。一个 data.frame 保存过去的数据,另一个 data.frame 保存未来的预测数据。例如:

past <- structure(list(Period = c("2010-01-01", "2010-02-01", "2010-03-01", 
  "2010-04-01", "2010-05-01", "2010-06-01"), Count = c(3379221317, 
  3379221317, 3791458246, 4182424930, 4891432401, 5116360744)),
 .Names = c("Period", "Count"), row.names = c(NA, 6L), class = "data.frame")

future <- structure(list(Period = structure(c(15522, 15553, 15584, 15614, 
  15645, 15675), class = "Date"), Count = c(11051746713.9419, 11385578654.4160, 
  10864084232.2216, 11336164255.3271, 11121729107.9691, 12321341701.3780)),
  .Names = c("Period", "Count"), row.names = c(NA, 6L), class = "data.frame")

我使用rbind(past,future)了,并且出于某种原因,data.frame 中的Period条目future都被重命名了。看起来像:

> rbind(past,future)
       Period       Count
1  2010-01-01  3379221317
2  2010-02-01  3379221317
3  2010-03-01  3791458246
4  2010-04-01  4182424930
5  2010-05-01  4891432401
6  2010-06-01  5116360744
7       15522 11051746714
8       15553 11385578654
9       15584 10864084232
10      15614 11336164255
11      15645 11121729108
12      15675 12321341701

为什么我的日期被重命名为随机数?

4

2 回答 2

4

从 的输出中可以看出dput(past)past$Period是字符,而不是日期。 str(past)并且str(future)会告诉你他们是不同的。

> str(past)
'data.frame':   6 obs. of  2 variables:
 $ Period: chr  "2010-01-01" "2010-02-01" "2010-03-01" "2010-04-01" ...
 $ Count : num  3.38e+09 3.38e+09 3.79e+09 4.18e+09 4.89e+09 ...
> str(future)
'data.frame':   6 obs. of  2 variables:
 $ Period: Date, format: "2012-07-01" "2012-08-01" ...
 $ Count : num  1.11e+10 1.14e+10 1.09e+10 1.13e+10 1.11e+10 ...

data.frame 列中的所有元素必须是相同的类型,因此该future$Period列被转换......但不确定为什么它没有被正确转换,因为:

> as.character(future$Period)
[1] "2012-07-01" "2012-08-01" "2012-09-01" "2012-10-01"
[5] "2012-11-01" "2012-12-01"

所以解决方案

  1. 转为future$Period性格:future$Period <- as.character(future$Period)
  2. 隐秘至今past$Periodpast$Period <- as.Date(past$Period)

取决于你想要的输出。

于 2012-08-02T21:27:34.260 回答
3

它们不是随机的。矩阵元素必须没有属性,因此如果强制转换为矩阵,因子、日期和 POSIXt 项将成为它们的数字表示。有一个rbind.data.frame但您显然提供rbind了一个对象,该对象最终调用了该函数的 non-data.frame 版本。您需要从两个参数中提供 dput() 以获得更好的答案。

于 2012-08-02T21:09:20.353 回答