Использование read.zoo вместо read.table и Zoo ()?
-
26-09-2019 - |
Вопрос
У меня есть файл со многими рядами такого рода
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)
Решение
- Опечатка внутри
f
уже отметил. - Также есть несколько особенностей
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)