我需要每天将一个SPSS .sav文件作为没有值标签的数据框导入到R中。该文件是120,000+ obs并且正在增长。这个过程变得非常慢,所以我想确保我使用最快的方法。我一直在玩外国,避风港和memisc的功能。如果有所作为,我正在使用RDS。
编辑:我的文件是126343 x 33067和12.1 GB.I&只是简单地运行以下代码:
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
谢谢!
答案 0 :(得分:1)
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
由于我无法像您所描述的那样重现问题,因此您应该提供更多详细信息,以便更清楚地解决问题所在。如果您显示您正在使用的数据的代码和(子集或模拟),您可能会获得一些帮助来确定可能的瓶颈。
答案 1 :(得分:0)
避风港套餐(tidyverse的一部分)将是我的选择。但是没有把它用在数据集上那么大