35

次の形式の R に XTS 時系列があり、別のプログラムで作業するために CSV としてエクスポートする前に、いくつかの処理、サブセット化、および再配置を試みています。

head(master_1)
                   S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650

str(master_1)
An ‘xts’ object from 2010-03-03 to 2010-05-25 08:30:00 containing:
  Data: num [1:4000, 1] 2.85 2.69 2.57 2.38 2.22 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "S_1"
  Indexed by objects of class: [POSIXt,POSIXct] TZ: 
  Original class: 'zoo'  
  xts Attributes:  
List of 1
 $ dateFormat: chr "Date"

そして、これを data.frame に変換して、より簡単に操作して別のプログラムにエクスポートできるようにしたいと思います。ただし、test1 <- as.data.frame(master_1)test1 を使用すると、インデックス (つまり、日付と時刻) が表示されます。

head(test1)
                       S_1
2010-03-03 00:00:00 2.8520
2010-03-03 00:30:00 2.6945
2010-03-03 01:00:00 2.5685
2010-03-03 01:30:00 2.3800
2010-03-03 02:00:00 2.2225
2010-03-03 02:30:00 2.0650 

インデックスは表示されませんが、

str(test1)
'data.frame': 4000 obs. of  1 variable:
 $ S_1: num  2.85 2.69 2.57 2.38 2.22 ...

また、csv の書き込みwrite.csv(master_1, file="master_1.csv")には時刻や日付は含まれません。これはなぜですか? また、他の R コマンドで使用され、適切にエクスポートされるように、日付/時刻データを列として含めるにはどうすればよいですか?

助けてくれてありがとう。

4

6 に答える 6

61

これは、日付が data.frame の行名であるためです。それらを別の列にする必要があります。

これを試して:

 data.frame(date=index(master_1), coredata(master_1))
于 2010-08-02T11:27:49.143 に答える
18

これはちょっとした余談ですが、fortify(...)パッケージ内の関数は、さまざまggplot2なオブジェクトを での使用に適したデータ フレームに変換します。ggplot(...)xts

library(xts)
set.seed(1)    # for reproducible example
master_1 <- xts(rnorm(10,mean=2,sd=0.1),as.POSIXct("2010-03-03")+30*(0:9))

library(ggplot2)
df <- fortify(master_1)
head(df)
#                  Index master_1
# 1  2010-03-03 00:00:00 1.937355
# 2  2010-03-03 00:00:30 2.018364
# 3  2010-03-03 00:01:00 1.916437
# 4  2010-03-03 00:01:30 2.159528
# 5  2010-03-03 00:02:00 2.032951
# 6  2010-03-03 00:02:30 1.917953

したがって、すでにgggplotこれを使用している場合は、簡単な方法です。Indexインデックスは(大文字の「I」)という名前の列に入ることに注意してください。

于 2014-09-24T04:33:05.910 に答える
7

インデックスクラスを失う1.9.6ことなく直接変換できるので。xts単純な:

as.data.table(master_1)

インデックスは結果の最初の列として追加され、インデックスまたはクラスdata.tableが保持されます。DatePOSIXct

于 2015-01-18T11:33:21.983 に答える
2

シェーンは正しい。あなたはインデックス(xts)を探しているかもしれません。再現可能な例を次に示します。

library(xts)
example(xts)
x = head(sample.xts)
datefield = index(x)
newdf = data.frame(x,datefield)

次に、それをcsvに簡単にエクスポートできるはずです。もちろん、行の名前も変更できます。

于 2010-08-02T11:33:31.460 に答える
-2

XTS を data.frame に変更するエレガントなフォーム:

myDF <- as.data.frame(as.matrix(myXTS))
于 2014-09-23T23:55:32.527 に答える