我需要每天将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