2016-10-19 20 views
4

zoo time seriesRのデータフレームに変換し、日付がデータフレームのインデックスになりました。データフレームに日付を通常の列として表示する方法はありますか?動物園をデータフレームに変換する

monthly_df <- data.frame(monthly_zoo) 

head(monthly_zoo) 

zoo output

head(monthly_df) 

dataframe output

+0

'monthly_dfの$月< - rownames (monthly_df) 'を使用するか、' tibble :: rownames_to_column'を使用してください – alistaire

+3

**あなたの投稿を**編集して、実際のコード/入出力をスクリーンショットの代わりにテキストとして表示してください。他の人は画像からコピー&ペーストすることはできません。 [詳細はこちら](http://meta.stackoverflow.com/a/285557/1402846)を参照してください。ありがとうございました。 – Pang

答えて

5

あなたはas.data.frame()をしたいです。証人:

R> library(quantmod) 
Loading required package: xts 
Loading required package: TTR 
Version 0.4-0 included new data defaults. See ?getSymbols. 
R> IBM <- as.zoo(getSymbols("IBM")) # convert from xts 
R> class(IBM) 
[1] "zoo" 
R> tail(IBM) 
      IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted 
2016-10-11 156.73 156.95 153.89 154.79 2901300  154.79 
2016-10-12 154.97 154.97 153.08 154.29 2964000  154.29 
2016-10-13 153.70 154.22 152.27 153.72 2909900  153.72 
2016-10-14 154.47 155.53 154.09 154.45 4358200  154.45 
2016-10-17 154.45 155.89 154.34 154.77 5890400  154.77 
2016-10-18 150.02 151.00 147.79 150.72 12705700  150.72 
R> as.data.frame(tail(IBM)) 
      IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted 
2016-10-11 156.73 156.95 153.89 154.79 2901300  154.79 
2016-10-12 154.97 154.97 153.08 154.29 2964000  154.29 
2016-10-13 153.70 154.22 152.27 153.72 2909900  153.72 
2016-10-14 154.47 155.53 154.09 154.45 4358200  154.45 
2016-10-17 154.45 155.89 154.34 154.77 5890400  154.77 
2016-10-18 150.02 151.00 147.79 150.72 12705700  150.72 
R> class(as.data.frame(tail(IBM))) 
[1] "data.frame" 
R> 

それが明示的に作る(代わりにデフォルトのrownamesに頼るの)列として日付を追加するには:

R> IBM <- getSymbols("IBM") # keep as xts 
R> tail(data.frame(index(IBM), as.data.frame(IBM))) 
      index.IBM. IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted 
2016-10-11 2016-10-11 156.73 156.95 153.89 154.79 2901300  154.79 
2016-10-12 2016-10-12 154.97 154.97 153.08 154.29 2964000  154.29 
2016-10-13 2016-10-13 153.70 154.22 152.27 153.72 2909900  153.72 
2016-10-14 2016-10-14 154.47 155.53 154.09 154.45 4358200  154.45 
2016-10-17 2016-10-17 154.45 155.89 154.34 154.77 5890400  154.77 
2016-10-18 2016-10-18 150.02 151.00 147.79 150.72 12705700  150.72 
R> 
+0

私は間違っているかもしれませんが、これは ''適切な列ではなく '' row.names''として ''インデックスを残していませんか? – thelatemail

+1

私はまだそれに取り組んでいました。そこに今。 –

+0

ありがとうございます!それがトリックでした。 :) – SteveJones22

4

fortify.zoo(z)は、最初の列とdata.frameに動物園のオブジェクトzを変換し、インデックスに等しい。

library(zoo) 
z <- zoo(1:3, as.Date("2000-01-01") + 0:2) # test object 
fortify.zoo(z) 

与える:(ジェネリックfortifyが存在するように)、それが交互のように書くことができ

 Index z 
1 2000-01-01 1 
2 2000-01-02 2 
3 2000-01-03 3 

ggplot2場合がロードされます。

library(ggplot2) 
fortify(z) 
関連する問題