如何在R中读取大型sas7bdat数据集?

如何在R中读取大型sas7bdat数据集?,r,R,我有一个60gb的sas7bdat文件,我正试图在R中子集。有人知道这样做的方法吗 我有SAS,大约需要14分钟才能完成,但我想要一种在R中完成的方法 谢谢我下载了将Sas转换为csv的奇妙dsread 您应该从CMD中使用它,但我选择将其集成到R中。 我创建了一个将Sas迁移到csv的函数: esp_Sas_Csv<-function(dir,file_input,dir_output,device="c:") { p1<-paste("cd",dir) if(tolower(de

我有一个60gb的sas7bdat文件,我正试图在R中子集。有人知道这样做的方法吗

我有SAS,大约需要14分钟才能完成,但我想要一种在R中完成的方法


谢谢

我下载了将Sas转换为csv的奇妙dsread

您应该从CMD中使用它,但我选择将其集成到R中。 我创建了一个将Sas迁移到csv的函数:

esp_Sas_Csv<-function(dir,file_input,dir_output,device="c:") {
p1<-paste("cd",dir)
if(tolower(device)!="c:") {p1<-paste(device,"\n",p1)}

#"open" the program

p2<-"SET dsread=C:\\dsread\\dsread.exe"
cmd2<-paste('"%dsread%" /v /t ',file_input,' >  "',dir_output,file_input,'.csv"',sep="")

cmd<-paste(p1,p2,cmd2, sep="\n")
setwd("c:\\temp")
write(cmd,"sas_to_csv.bat")
system("sas_to_csv.bat")

}
看到我的答案了吗--

我发现
haven
包在读取
sas7bdat
文件时运行得相当快


无论如何,在60GB的情况下,您最好的选择可能是将其转换为
.csv
fread
可以处理的东西,然后再转换为
数据。table::fread
将其转换为
R

sas9.4实际上非常快,数据量非常大。是的,我希望找到一种解决sas
Hmisc
具有处理sas7bdat文件的功能的方法。不确定这对60gig文件有多大帮助。我认为
data.table
没有sas支持。可能将其写入csv或文本文件,然后
fread
itI刚刚上传了一个软件包,看到:我还没有看过,但看起来很有希望。你确定需要整个文件吗?不仅仅是选定的变量?如果它只是您需要的子集操作,那么在SAS中执行它将比解决R内存限制问题容易得多。
device<-"c:"
dir<-"C:\\temp\\"
file_input<-"my_sas_tab"
dir_output<-"C:\\temp\\"

esp_Sas_Csv(dir,file_input,dir_output,device)
cd C:\temp\
SET dsread=C:\dsread\dsread.exe
"%dsread%" /v /t my_sas_tab >  "C:\temp\my_sas_tab.csv"