我有一个60 do的sas7bdat文件,我正在尝试在R中子集。有谁知道这样做的方法吗?
我有SAS,大约需要14分钟才能完成,但我想要一种在R中完成此操作的方法。
谢谢
发布于 2015-05-08 22:21:47
我下载了将Sas转换为csv的出色的dsread http://www.oview.co.uk/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")
}这段代码:
device<-"c:"
dir<-"C:\\temp\\"
file_input<-"my_sas_tab"
dir_output<-"C:\\temp\\"
esp_Sas_Csv(dir,file_input,dir_output,device)生成并运行如下所示的.bat
cd C:\temp\
SET dsread=C:\dsread\dsread.exe
"%dsread%" /v /t my_sas_tab > "C:\temp\my_sas_tab.csv"发布于 2015-07-31 06:21:09
请看我的答案here--
我发现在读取sas7bdat文件时,haven包的工作速度相当快。
无论如何,在60 or时,最好的选择可能是将其转换为.csv或fread可以处理的文件,然后将其data.table::fread到R中。
https://stackoverflow.com/questions/22213203
复制相似问题