Вопрос

У меня есть файл со многими рядами такого рода

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

Чтобы прочитать его как зоопарк, я использую

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

это работает правильно, но я хотел бы использовать read.zoo() вместо.

я пробовал

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

и даже указание

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

Но это не работает; Он говорит: Line 136 (тот, который я вставил выше), не имеет 14 элементов.

Я также пробовал:

tmp <- read.zoo("myfile", index = 1:2, sep=" ", FUN  = as.chron)
Это было полезно?

Решение

  1. Опечатка внутри f уже отметил.
  2. Также есть несколько особенностей read.zoo что вы можете воспользоваться. Во-первых, обратите внимание, что если значение index Аргумент - это список, то столбцы, на которые упоминаются в каждом компонент этого списка, передаются как отдельные аргументы для FUN. Отказ Также обратите внимание, что FUN2 аргумент доступен, который применяется к выходу FUN Таким образом, мы можем написать его компактной модой, как это:

Таким образом, попробуйте это:

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)

Вышеписанное было написано, чтобы быть в себе, чтобы вы могли просто скопировать его Verbatim в буфер обмена, а затем вставить его в свою сессию R. Использовать его с вашим файлом, заменить textConnection(Lines) с участием "myfile".

Другие советы

Ваша функция f должен искать tmp. Отказ Вы, вероятно, намеревались:

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

Кроме того, примерные данные, которые вы опубликовали, похоже на разграниченную вкладку, а не разграниченные местами, поэтому вам может понадобиться в этом:

tmp <- read.zoo("myfile", index = 1, sep="\t", FUN = as.chron)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top