Question

J'ai un fichier avec plusieurs lignes de ce genre

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

Pour le lire comme zoo j'utilise

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

qui fonctionne correctement Mais je voudrais utiliser read.zoo() à la place.

J'ai essayé

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

et même en spécifiant

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

mais il ne fonctionne pas; ça dit: la ligne 136 (celle que j'ai collé ci-dessus) n'a pas 14 éléments.

J'ai aussi essayé:

tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = as.chron)
Était-ce utile?

La solution

  1. La faute de frappe dans f était déjà fait remarquer.
  2. Il y a aussi quelques fonctionnalités de read.zoo que vous voudrez peut-être profiter. Tout d'abord, notez que si la valeur de l'argument index est une liste alors les colonnes référencées dans chaque composant de cette liste sont passés comme arguments séparés pour FUN. Notez également qu'un argument FUN2 est disponible qui est appliquée à la sortie de FUN afin que nous puissions l'écrire de façon compacte comme ceci:

Essayez donc ceci:

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)

Ce qui précède a été écrit pour être autonome pour que vous puissiez simplement copier textuellement le presse-papiers, puis collez-le dans votre session R. Pour l'utiliser avec votre fichier remplacer textConnection(Lines) avec "myfile".

Autres conseils

Votre fonction f doit rechercher tmp. Vous avez probablement l'intention:

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

En outre, les données de l'échantillon que vous avez affichée ressemble il est délimité par des tabulations, non délimité l'espace, de sorte que vous devrez peut-être ceci:

tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top