1

我已经将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.

4

3 回答 3

2

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

那么你有它的许可。如果没有,那么您需要联系您的站点代表或考虑替代直接导入。

于 2013-07-31T19:23:55.323 回答
2

导出任何类型的 Stata 数据文件的可靠方法是通过 Stata 中的以下命令将其保存为 csv 文件:

outsheet using "directory/foo.csv", comma replace

SAS 导入 csv 文件应该没有问题。

于 2013-07-31T21:12:12.607 回答
2

双方的人在这里需要更准确的细节。

在 Stata 中,saveold命令saves 是内存中的数据集,但是为了让之前版本的 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 导出为某种文本文件。

于 2013-07-31T19:20:22.090 回答