有些R论坛上的R数据集没有SAS格式的数据集,但是作为SP可能更需要SAS数据集,同时也能进行比对。
对于R数据集,文件格式一般是.RDA或者.RDATA的形式,如果需要转换成SAS数据集,可以使用haven包,它属于tidyverse生态系统的一员。
我要转换的一个数据集叫GBCS,好像是一个关于德国病人肿瘤数据的。
如果没有下载haven包的话,先使用
install.packages("haven")
下载之后记得加载包,这是初学R需要注意的。
library(haven)
注意这时候RStudio可能会报haven只能在R 4.3.3版本之上才存在,这时候你需要升级你的R,可以去官网上下载最新版的R,然后老的R卸载就可以了。
之后就可以用write_sas函数直接将R数据集直接转换成SAS数据集。
但是这个函数的说明也说了这个函数很不稳定,因为SAS数据集可能就一种固定的结构,但是R数据集中可能还会存在因子这些东西,所以转换之后,有可能会打不开,经测试,确实我现在转换的这个数据集打不开。
install.packages("haven")
library(haven)
class(gbcs)
write_sas(gbcs,path="D:/R_learining/gbcs.sas7bdat")#这个函数不稳定,很有可能打不开SAS数据集write_xpt(gbcs,path="D:/R_learining/gbcs.xpt",version=8)help(write_sas)
但是R还提供一个函数就是将R数据集转换成SAS数据集,write_xpt函数。
write_xpt(gbcs, path = "D:/R_learining/gbcs.xpt",version=8),这里的version 8就是指转换成V8格式的XPT数据集。
需要注意的是,如果直接用SAS打开V8的XPT数据集,会报错打不开,所以可以用xpttoloc这个宏(这是SAS官方的宏,需要在SAS上运行)
libname test"D:\R_learining\class1";filename xlocfile"D:\R_learining\gbcs.xpt";/*存放XPT的路径*/%xpt2loc(libref=test/*输出数据集的逻辑库*/ ,memlist=gbcs ,filespec=xlocfile );
之后就可以打开这个数据集了,如果转换V5的XPT数据集,可以直接用SAS打开
网友评论