2017-05-28 14 views
0

私はgetSymbols(^DJI)で試してみましたが、文脈のためにヤフーから別の問題に関連する可能性のあるエラーメッセージが出ました。サブセットタイムアウト時系列R

ポイントは、私が実行できるようにするために、時系列に十分に近い形式にマッサージ、一度ダウンロード、およびRにインポートしていることであるchartSeries(DJI)

require(RCurl) 
require(foreign) 
x <- getURL("https://raw.githubusercontent.com/RInterested/datasets/gh-pages/%5EDJI.csv") 
DJI <- read.csv(text = x, sep =",") 
DJI$Date <- as.Date(DJI$Date, format = "%m/%d/%Y") # Formatting Date as.Date 
rownames(DJI) <- DJI$Date       # Assigning Date to row names 
DJI$Date <- NULL         # Removing the Date column 
chartSeries(DJI, type="auto", theme=chartTheme('white')) 

enter image description here

場合でも、データセットは実際には時系列ではありません:

> is.ts(DJI) 
[1] FALSE 

問題は、たとえば、最小のクローンの日付ダウの価値を歌う私は

> DJI[DJI$Close == min(DJI$Close),] 
       Open High  Low Close Adj.Close Volume 
1985-05-01 1257.18 1262.81 1239.07 1242.05 1242.05 10050000 

は私がしたい部分のみで、行名(1985-05-01)、を含む、行全体をもたらすような何かを行うことができます。私は実際の日付を取得を主張しかし、もし、私は列のいずれかで日付を含む第二のデータセットを両立する必要があります。

require(RCurl) 
require(foreign) 
x <- getURL("https://raw.githubusercontent.com/RInterested/datasets/gh-pages/%5EDJI.csv") 
DJI <- read.csv(text = x, sep =",") 

DJI$Date <- as.Date(DJI$Date, format = "%m/%d/%Y") # Formatting Date as.Date 
rownames(DJI) <- DJI$Date   # Assigning Date to row names 
DJI.raw <- DJI      # Second dataset for future subsetting 
DJI$Date <- NULL     # Removing the Date column 

私は

> DJI.raw$Date[DJI.raw$Close == min(DJI.raw$Close)] 
[1] "1985-05-01" 

さらに実行することができず、私はデータセットを.xtsファイルに変換すると助けになるとは思わない。

+0

日付をrownamesに割り当てると、それらは文字に戻ります。つまり、日付を含むdata.frameの別の列を望んでおらず、日付が文字であればいいのですが、単に 'rownames(DJI)[DJI $ Close == min(DJI $ Close)] ' – digEmAll

+0

@digEmAll私は、時系列では行の名前が日付であることを前提としていました。これは本当ですか?また、データセット内にDate列を保持すると 'chartSeries()'を実行できません。 – Toni

+1

はい、可能です(chartSeries関数はわかりません)。 data.frameのanyway列にanyawayを渡し、列のサブセットをchartSeriesに渡します。たとえば'-1'は、列の位置が1のままchartSeriesに渡されていないことを意味します(もちろん、Date列がatの場合は-1)。 2位、-2などを渡す必要があります) – digEmAll

答えて

0

私はあなたが望むものはっきりしませんが、あなたはちょうど日付がほしいと思うように聞こえますか?あなたはXTSは、そうでない場合は、単純なrownames + which.minはあなたの日付になるだろう(実行可能だっただろう)オプション

time(as.xts(DJI))[which.min(DJI$Close)] # POSIXct format 
# [1] "1985-05-01 EDT" 

ではありません言及しますか?

as.Date(rownames(DJI)[which.min(DJI$Close)]) # Date format 
# [1] "1985-05-01" 
+0

私は時系列に慣れていませんが、矛盾している2つのアイデアがあり、両方が間違っている可能性があります:1. Rのtsは日付である必要がありますか? 2. 'as.xts()'でtsに変換すると、rownamesは消去され、デフォルトでマトリックス形式になります。 – Toni

+0

tsオブジェクトを作成するとき、日付の頻度は定期的です。 ts()を使用してtsオブジェクトを作成するには、開始日、終了日、および頻度(1 =年、4 = qrtrly、12 =月間など)の引数があります。 Xtsオブジェクトは動作が異なります。通常の頻度を想定せず、単に値を日付スロットに適合させます。 –