Преобразование объекта data.frame в объект xts в R

Я хотел бы как можно эффективнее преобразовать свои файлы csv в объекты xts. Кажется, я застрял в том, что мне сначала нужно применить метод read.zoo для создания объектов зоопарка, прежде чем я смогу преобразовать его в объект xts.

gold <- read.zoo("GOLD.CSV", sep=",", format="%m/%d/%Y", header=TRUE)

Gold <- as.xts (gold, order.by=index(gold), frequency=NULL)

Является ли это наиболее эффективным способом преобразования исходного файла GOLD.CSV в объект R xts?


person Milktrader    schedule 18.08.2010    source источник


Ответы (2)


Если это файл, то его нужно прочитать.

Так что используйте read.zoo() как и вы, но сразу конвертируйте:

 gold <- as.xts(read.zoo("GOLD.CSV", sep=",", format="%m/%d/%Y", header=TRUE))

Ok?

person Dirk Eddelbuettel    schedule 18.08.2010
comment
Это работает! Я не понимаю, как вы можете избежать передачи аргумента order.by. В любом случае, я не уверен, что вы сможете превзойти эту линию по эффективности. Похоже, что функция read.xts не существует или не разрабатывается. - person Milktrader; 18.08.2010
comment
Если это уже объект zoo, он имеет индекс и не нуждается в order.by. - person Dirk Eddelbuettel; 18.08.2010
comment
@Milktrader, я думаю, ты путаешь xts и as.xts. Сравните args(xts:::as.xts.zoo) и args(xts). - person Joshua Ulrich; 18.08.2010

Вы можете написать свою собственную функцию read.xts. Мы бы назвали это функцией-оболочкой, и она должна выполнять что-то вроде

read.xts <- function(x, format = "%m/%d/%Y", header = TRUE, sep = ",") {
  result <- as.xts(read.zoo(x, sep = sep, format = format, header = header))
  return(result)
}

read.xts(file.choose())  # select your file

Обратите внимание на аргументы в function(). Они передаются в тело функции (код между фигурными скобками). Если function() аргументы имеют значения, это означает, что это их значение по умолчанию. Если вы назначите новые значения (например, function(x = "my.file.csv", sep = "\t")), они перезапишут значения по умолчанию. В последней строке показано, как можно использовать новую функцию. Не стесняйтесь расширять эту функцию с помощью остальных read.zoo аргументов. Если у вас есть какой-то конкретный вопрос о том, как это сделать, не стесняйтесь и просто спросите. :)

Я использую несколько таких жемчужин в своей повседневной работе. Я создал файл с именем workhorse.R и загружаю его (например, source("d:/workspace/workhorse.R")) всякий раз, когда мне нужны какие-либо маленькие функции.

person Roman Luštrik    schedule 18.08.2010
comment
Самая отличная идея, которую я не рассматривал, поскольку я все еще пишу предварительную функцию в своих знаниях R. Функции для меня следующие, так что это идеальное приложение. Кроме того, спасибо, что вы определили функцию «обертки», поскольку эта фраза была для меня непрозрачной. Теперь начинаю погружаться. - person Milktrader; 18.08.2010
comment
Не бойтесь --- это может быть так же просто, как один вкладыш: cubed <- function(x) x^3. Теперь попробуйте cubed(1:3). - person Dirk Eddelbuettel; 18.08.2010