Pergunta

Eu tenho um arquivo com muitas linhas desse tipo

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

Para lê -lo como zoológico, eu uso

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

Isso funciona corretamente, mas eu gostaria de usar read.zoo() em vez de.

eu tentei

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

e até especificar

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

Mas não funciona; Diz: Linha 136 (a que colei acima) não tem 14 elementos.

Eu também tentei:

tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = as.chron)
Foi útil?

Solução

  1. O erro de digitação f já foi apontado.
  2. Também existem alguns recursos de read.zoo que você pode querer aproveitar. Em primeiro lugar, observe que se o valor do index O argumento é uma lista então as colunas referenciadas em cada componente dessa lista são passadas como argumentos separados para FUN. Observe também que um FUN2 argumento está disponível que é aplicado à saída de FUN Para que possamos escrever de uma maneira compacta como esta:

Portanto, tente o seguinte:

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)

O acima foi escrito para ser independente, para que você possa copiá -lo literalmente para a área de transferência e colá -lo na sua sessão. Para usá -lo com seu arquivo Substitua textConnection(Lines) com "myfile".

Outras dicas

Sua função f tem que procurar tmp. Você provavelmente pretendia:

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

Além disso, os dados de amostra que você postou parecem delimitados com guias, não delimitados por espaço, então você pode precisar: em vez disso:

tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top