У меня есть csv, который содержит около 2 миллионов строк строк даты в формате:
2012/11/13 21:10:00
Позволяет называть csv$Date.and.Time
Я хочу как можно быстрее преобразовать эти даты (и их сопровождающие данные) в xts
Я написал script, который выполняет преобразование просто отлично (см. ниже), но он ужасно медленный, и я хотел бы ускорить это как можно больше.
Вот моя нынешняя методология. У кого-нибудь есть предложения по тому, как сделать это быстрее?
dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")
idx <- format(dt,tz=z,usetz=TRUE)
Итак, script преобразует эти строки даты в POSIX.ct
. Затем выполняется преобразование часового пояса с использованием format
(z
- переменная, представляющая TZ, к которой я конвертирую). Затем я делаю регулярный вызов xts
, чтобы сделать это серией xts с остальными данными в csv.
Это работает 100%. Это просто очень, очень медленно. Я пытался запустить это параллельно (он ничего не делает, если что-то еще хуже). Что я подразумеваю под "медленным"?
user system elapsed
155.246 16.430 171.650
Что на 3GhZ, 16GB ram 2012 mb pro. Я могу получить примерно половину, что на аналогичном процессоре с 32 ГБ оперативной памяти на машине Win7
Я уверен, что у кого-то есть лучшая идея - я открыт для предложений через Rcpp
и т.д. Однако в идеале решение работает с csv, а не с каким-либо другим методом, например с настройкой базы данных. Сказав это, я сделаю это с помощью любого способа, который даст самое быстрое преобразование.
Я бы очень признателен за любую помощь. Спасибо заранее.