2

一緒に追加したい2つのdata.frameがあります。1つのdata.frameは過去のデータを保持し、もう1つの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$Periodfuture$Period <- as.character(future$Period)
  2. past$Period日付までの秘密:past$Period <- as.Date(past$Period)

希望する出力に応じて。

于 2012-08-02T21:27:34.260 に答える
3

それらはランダムではありません。行列要素には属性がない必要があるため、行列に強制変換すると、因子、日付、およびPOSIXt項目が数値表現になります。ありますが、その関数の非data.frameバージョンを呼び出すことになったオブジェクトをrbind.data.frame提供したようです。rbindより良い答えを得るには、両方の引数からdput()を提供する必要があります。

于 2012-08-02T21:09:20.353 に答える