Frage

Ich habe eine Datei mit vielen Zeilen dieser Art

2010-01-12 19:40   1021.00000   0.00001     1.00
2010-01-12 19:50   1031.00000   0.00000     -1.00

Um es als Zoo ich Gebrauch zu lesen

tmp <- read.table("myfile")
GOEMD <- zoo(tmp[,3], as.chron(paste(tmp[,1],tmp[,2]), format="%Y-%m-%d %H:%M"))

, die ordnungsgemäß funktioniert Aber ich möchte stattdessen read.zoo() verwenden.

Ich habe versucht,

f <- function(x)  as.chron(paste(tmp[,1],tmp[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = f)

und auch die Angabe

colClasses= c("character","character","numeric","numeric","numeric")

, aber es funktioniert nicht; es sagt: 136 Linie (die, die ich oben eingefügt haben) nicht 14 Elemente haben.

Ich habe auch versucht:

tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = as.chron)
War es hilfreich?

Lösung

  1. Der Tippfehler in f wurde bereits hingewiesen.
  2. Es gibt auch ein paar Features von read.zoo, dass Sie nutzen vielleicht wünschen. Erstens, beachten Sie, dass, wenn der Wert des index Argument eine Liste ist dann die Spalten in jeder Komponente dieser Liste referenziert werden als separate Argumente FUN geben. Beachten Sie auch, dass ein FUN2 Argument zur Verfügung, die mit dem Ausgang des FUN angelegt wird, so dass wir es in einer kompakten Art und Weise wie diese schreiben können:

So versuchen Sie dies:

library(zoo)
library(chron)

Lines <- "2010-01-12 19:40   1021.00000   0.00001     1.00
2010-01-12 19:50   1031.00000   0.00000     -1.00"

z <- read.zoo(textConnection(Lines), index = list(1, 2), 
        FUN = paste, FUN2 = as.chron)

wurde wie oben geschrieben selbst enthalten zu sein, so dass Sie nur in die Zwischenablage kopieren wörtlich könnten und es dann in Ihre R-Sitzung einfügen. Um es zu nutzen mit Ihrer Datei ersetzen textConnection(Lines) mit "myfile".

Andere Tipps

Ihre Funktion f hat für tmp zu suchen. Sie haben wahrscheinlich gedacht:

f <- function(x)  as.chron(paste(x[,1],x[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)

Auch die Abtastdaten Sie auf dem Laufenden sieht aus wie es die Tabula begrenzt, nicht durch Leerzeichen getrennte, so dass Sie auf diese stattdessen brauchen können:

tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top