将 SPSS 数据作为数据帧导入 R 的最快方法



我需要每天将SPSS.sav文件作为没有值标签的数据框导入R。该文件是 120,000+ obs 并且还在增长。 这个过程变得非常慢,所以我想确保我使用的是最快的方法。我一直在玩外国、避风港和 memisc 中的功能。如果这有所作为,我正在使用 RDS。

编辑:我的文件是126343 x 33067和12.1 GB。我只是简单地运行以下代码:

library(haven)
data <- read_sav(file)

我无法共享此文件,但要尝试复制,我做到了:

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 

谢谢!

> 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 

由于我无法重现您所描述的问题,因此您应该提供更多详细信息以更清楚地说明问题所在。如果您显示代码和(子集或模拟(您正在使用的数据,您可能会获得一些帮助,以确定可能的瓶颈。

避风港套餐(整洁的一部分(将是我的选择。但是还没有在那么大的数据集上使用它

https://github.com/tidyverse/haven

最新更新