首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中读入大型sas7bdat数据集?

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

Stack Overflow用户
提问于 2014-03-06 09:44:21
回答 2查看 5.9K关注 0票数 5

我有一个60 do的sas7bdat文件,我正在尝试在R中子集。有谁知道这样做的方法吗?

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

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-05-08 22:21:47

我下载了将Sas转换为csv的出色的dsread http://www.oview.co.uk/dsread/

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

代码语言:javascript
复制
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")

}

这段代码:

代码语言:javascript
复制
device<-"c:"
dir<-"C:\\temp\\"
file_input<-"my_sas_tab"
dir_output<-"C:\\temp\\"

esp_Sas_Csv(dir,file_input,dir_output,device)

生成并运行如下所示的.bat

代码语言:javascript
复制
cd C:\temp\
SET dsread=C:\dsread\dsread.exe
"%dsread%" /v /t my_sas_tab >  "C:\temp\my_sas_tab.csv"
票数 2
EN

Stack Overflow用户

发布于 2015-07-31 06:21:09

请看我的答案here--

我发现在读取sas7bdat文件时,haven包的工作速度相当快。

无论如何,在60 or时,最好的选择可能是将其转换为.csvfread可以处理的文件,然后将其data.table::freadR中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22213203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档