我已经将Stata文件转换为旧版本saveold
以下不适用于我的 SAS 9.0
proc import datafile="d:\hsb.dta" out=mydata dbms = dta replace;
run;
proc print data=mydata;
run;
ERROR: DBMS type DTA not valid for import.
SAS 直到 9.1.3 版才添加对导入 Stata 文件的支持(请参阅此技术支持说明)。您需要将您的 SAS 版本升级到 9.1.3 或更高版本(当前版本为 9.3,9.4 正在发布中),或者按照 Nick 的建议以某种格式(例如文本文件)从 Stata 导出它。
假设您的 SAS 版本已获得有效许可,您只需联系您的 SAS 站点代表即可轻松升级。几乎没有理由使用 9.0;由于 9.0 的几个重大问题,它很快被 9.1.3 取代。
您还需要获得 SAS/ACCESS to PC File Formats 的许可。这是 Base SAS 的可选许可证。您可以通过运行来验证您的许可证:
PROC SETINIT; RUN;
如果您看到一个条目
SAS/ACCESS Interface to PC Files
那么你有它的许可。如果没有,那么您需要联系您的站点代表或考虑替代直接导入。
导出任何类型的 Stata 数据文件的可靠方法是通过 Stata 中的以下命令将其保存为 csv 文件:
outsheet using "directory/foo.csv", comma replace
SAS 导入 csv 文件应该没有问题。
双方的人在这里需要更准确的细节。
在 Stata 中,saveold
命令save
s 是内存中的数据集,但是为了让之前版本的 Stata 可以读取它。有时,但并非总是如此,早期版本的 Stata 也可以读取它。因此,从http://www.stata.com/manuals13/dsave.pdf您可以了解到,saveold
在 Stata 13 中将生成一个可以被 Stata 12 和 Stata 11 读取的数据集。如本例所示,兼容性可以更早一个版本,因为 StataCorp 不会在每次生产新版本的 Stata 时更改数据集的存储格式。因此,saveold
在版本 n 中确保版本 n - 1 的可读性,并可能暗示版本 n - 2 或更早版本的可读性。
因此,从 Stata 的角度来看,您需要准确了解您使用的是哪个版本的 Stata。
对于 SAS 人员来说,SAS 9.0 究竟可以读取什么仍然存在问题。一种猜测是 SAS 9.0 可以读取 Stata.dta
文件,只是不能读取发布者保存的版本。但是,答案可能只是在 SAS 中发出了错误的命令,我希望有人能解决这个问题。
一个广泛的选择仍然是将您的数据从 Stata 导出为某种文本文件。