2017-05-28 1 views
0

Ich habe Aktienmarktdaten von Yahoo heruntergeladen (Code unten) - für den Kontext, zuerst versuchte ich mit getSymbols(^DJI), aber ich habe Fehlermeldungen möglicherweise im Zusammenhang mit Yahoo ... anderes Problem.Sub-Einstellung Zeiten außerhalb der Zeitreihe in R

Der Punkt ist, dass einmal heruntergeladen und in R importiert, ich habe es in ein Format, nahe genug, um eine Zeitreihe chartSeries(DJI) laufen massiert zu:

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

auch wenn die -Datensatz ist nicht wirklich eine Zeitreihe:

> is.ts(DJI) 
[1] FALSE 

das Problem entsteht, wenn ich versuche, das Datum, um herauszufinden, zum Beispiel der minimale clo sing Wert des Dow. Ich kann so etwas wie

> 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 

die gesamte Zeile ergibt, einschließlich der Zeilennamen (1985-05-01) tun, die der einzige Teil ist, ich will. Allerdings, wenn ich darauf bestehen, nur das aktuelle Datum immer, ich habe einen zweiten Datensatz die Daten in einer der Spalten jonglieren enthält:

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 

die mir erlaubt

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

Weitere zu laufen, Ich glaube nicht, dass die Umwandlung in eine .xts Datei helfen würde.

+0

Bitte beachten Sie, dass, wenn Sie Daten rownames zuweisen, wenden sie sich zurück in Buchstaben. Wenn du aber keine andere Spalte im data.frame mit den Daten haben willst und es dir gut geht, dass die Daten Zeichen sind, kannst du einfach 'rownames (DJI) [DJI $ Schließen == min (DJI $ Schließen)] ' – digEmAll

+0

@digEmAll Ich war unter der Annahme, dass eine Zeitreihe die Zeilennamen als Datum benötigt. Ist das nicht wahr? Außerdem kann ich 'chartSeries()' nicht ausführen, wenn ich die Datumsspalte innerhalb des Datasets verwalte ... – Toni

+1

Ja, das ist möglich (ich kenne die chartSeries-Funktion nicht), aber das bedeutet nicht, dass Sie die nicht haben können Spalte im data.frame beliebig und nur eine Spaltenuntermenge zu chartSeries übergeben ... eg 'chartSeries (DJI [, - 1], type =" auto ", theme = chartTheme ('weiß'))' (-1 bedeutet, dass wir die Spalte an Position 1 nicht an chartSeries übergeben, natürlich, wenn Date column at ist Position 2, solltest du -2 und so weiter gehen ...) – digEmAll

Antwort

0

Ich bin nicht klar, was Sie wollen, aber es klingt wie Sie wollen nur das Datum? Sie erwähnen xts ist keine Option (die runnable gewesen wäre)

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

Ansonsten ein einfaches rownames + which.min wäre für Sie das Datum bekommen?

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

Ich bin nicht vertraut mit Zeitreihen, aber es gibt zwei Ideen, die widersprüchlich sind, und möglicherweise beide falsch: 1. Machen Sie die rownames von a ts in R müssen die Daten sein? 2. Wenn ich mit 'as.xts()' in ts umwandele, werden die rownames gelöscht und standardmäßig in das Matrixformat übernommen. – Toni

+0

Beim Erstellen eines ts-Objekts ist die Häufigkeit der Daten regelmäßig. Das Erstellen eines ts-Objekts mit ts() hat die Argumente für ein Startdatum, Enddatum und die Häufigkeit (1 = jährlich, 4 = qrtrly, 12 = monatlich usw.). Xts-Objekte funktionieren anders - sie nehmen keine reguläre Häufigkeit an und passen Werte einfach an Datumsslots an. –