Usando read.zoo en lugar de read.table y zoológico ()?
-
26-09-2019 - |
Pregunta
Tengo un archivo con muchas filas de este tipo
2010-01-12 19:40 1021.00000 0.00001 1.00
2010-01-12 19:50 1031.00000 0.00000 -1.00
Con el fin de leerlo como el uso zoológico I
tmp <- read.table("myfile")
GOEMD <- zoo(tmp[,3], as.chron(paste(tmp[,1],tmp[,2]), format="%Y-%m-%d %H:%M"))
que funciona correctamente
Pero me gustaría utilizar read.zoo()
lugar.
He intentado
f <- function(x) as.chron(paste(tmp[,1],tmp[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)
e incluso especificando
colClasses= c("character","character","numeric","numeric","numeric")
pero no funciona; dice: la línea 136 (el que yo he pegado arriba) no tiene 14 elementos.
También he intentado:
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = as.chron)
Solución
- El error tipográfico en
f
ya se señaló. - También hay algunas características de
read.zoo
que es posible que desee aprovechar. En primer lugar, tenga en cuenta que si el valor del argumentoindex
es una lista a continuación las columnas referenciadas en cada componente de esa lista se pasan como argumentos separados aFUN
. También tenga en cuenta que un argumentoFUN2
está disponible que se aplica a la salida deFUN
por lo que podemos escribir de una manera compacta como esto:
Por lo tanto intente lo siguiente:
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)
Lo anterior fue escrito para ser autónomo por lo que sólo puede copiar textualmente en el portapapeles y luego pegarlo en su sesión de R. Para utilizarlo con su archivo de reemplazar textConnection(Lines)
con "myfile"
.
Otros consejos
Su función f
tiene que buscar tmp
. Probablemente previstos:
f <- function(x) as.chron(paste(x[,1],x[,2]))
tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN = f)
Además, los datos de la muestra se registró parece que está delimitado por tabuladores, no en el espacio delimitado, lo que puede tener a este lugar:
tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)