Lesen xts aus CSV-Datei in R
Ich versuche zu Lesen Zeitreihen aus CSV-Datei und speichern Sie Sie als xts in der Lage sein, Sie zu verarbeiten, mit quantmod. Das problem ist, dass die numerischen Werte werden nicht ausgewertet.
CSV-Datei:
name;amount;datetime
test1;3;2010-09-23 19:00:00.057
test2;9;2010-09-23 19:00:00.073
R-code:
library(xts)
ColClasses = c("character", "numeric", "character")
Data <- read.zoo("c:\\dat\\test2.csv", index.column = 3, sep = ";", header = TRUE, FUN = as.POSIXct, colClasses = ColClasses)
as.xts(Data)
Ergebnis:
name amount
2010-09-23 19:00:00 "test1" "3"
2010-09-23 19:00:00 "test2" "9"
Finden Sie unter Spalte Betrag enthält Zeichendaten, aber erwartet, dass numerisch sein. Was ist falsch an meinem code?
InformationsquelleAutor Stas | 2010-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die interne Datenstruktur sowohl
zoo
undxts
istmatrix
, so kann man nicht mischen Datentypen.Nur Lesen Sie die Daten mit
read.table
:Merke ich Ihre Daten haben, subseconds, so können Sie interessiert sein in
xts::align.time
. Dieser code wird nehmenData
und erstellen ein Objekt mit einer Spalte für jedes"name"
von Sekunden.Wenn Sie möchten, um Objekte zu erstellen
test1
undtest2
in der globalen Umwelt können Sie etwas tun:Welche Struktur sollte ich verwenden zum Lesen von CSV und dann in der Lage sein zu erstellen, der zoo mit nur numerische Daten? Dank
Und könnten Sie empfehlen etwas gutes R Buch? Es scheint, ich brauche etwas zu Lesen, für einen start.
Siehe meine edits für die Antwort auf Ihre zweite Frage. Hinsichtlich der guten R-Bücher: suchen-ALSO für ([r] [Bücher]) und du wirst viele Antworten finden.
InformationsquelleAutor Joshua Ulrich
Kann man nicht mischen numerische und character-Daten in einem zoo oder xts-Objekt; jedoch, wenn die Spalte name ist nicht vorgesehen, um Zeitreihen von Daten, sondern vielmehr bestimmt ist, zu unterscheiden zwischen mehreren Zeitreihen, eine für test1, eine für "test2", usw.. dann können Sie split auf die Spalte 1 mit split=1, um die Ursache dieser Spaltung wie im folgenden code gezeigt. Achten Sie auf die Ziffern.Sek. oder sonst kannst du nicht sehen, die sub-Sekunden bei der Ausgabe (obwohl Sie es in jedem Fall):
InformationsquelleAutor G. Grothendieck