Самый быстрый способ импортировать данные SPSS в R как датафрейм - PullRequest
0 голосов
/ 30 мая 2018

Мне нужно импортировать файл SPSS .sav в R каждый день как фрейм данных без меток значений.Файл более 120000 набирает обороты.Этот процесс становится невероятно медленным, поэтому я хочу убедиться, что я использую самый быстрый из возможных методов.Я играл с функциями в иностранном, гавани и мемиск.Я работаю с RDS, если это имеет значение.

Редактировать: Мой файл имеет размер 126343 x 33067 и 12,1 ГБ. Я просто запускаю следующий код:

library(haven)
data <- read_sav(file)

Iне могу поделиться этим файлом, но чтобы попытаться воспроизвести, я сделал:

library(haven)
n <- 126343
exd <- data.frame(c(replicate(2000, sample(letters, n, replace = TRUE),
                              simplify = FALSE),
                    replicate(1306, runif(n),
                              simplify = FALSE)))
dim(exd)
## [1] 126343    3306
tmp <- tempfile(fileext = ".sav")
write_sav(exd, tmp)
system.time(exd2 <- read_sav(tmp))
##   user  system elapsed 
##  173.34   13.94   187.66 

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

120000 не очень большой.Если бы у вас не было очень низкой системы ресурсов, я бы не ожидал, что это вообще будет узким местом.На моем ноутбуке среднего класса чтение файла 122000 X 150 .sav занимает всего несколько секунд:

library(haven)
n <- 122000
exd <- data.frame(c(replicate(50, sample(letters, n, replace = TRUE),
                              simplify = FALSE),
                    replicate(100, runif(n),
                              simplify = FALSE)))
dim(exd)
## [1] 122000    150
tmp <- tempfile(fileext = ".sav")
write_sav(exd, tmp)
system.time(exd2 <- read_sav(tmp))
##   user  system elapsed 
##  1.913   0.096   2.015 

Поскольку я не могу воспроизвести проблему, как вы ее описали, вы должны предоставить большедетали, чтобы прояснить, в чем проблема.Если вы покажете код и (подмножество или симуляцию) данных, с которыми работаете, вы можете получить некоторую помощь в определении вероятного узкого места.

0 голосов
/ 30 мая 2018

Мой выбор - пакет убежища (часть тидиверса).Но не использовали его в наборах данных больших

https://github.com/tidyverse/haven

...