SAS仍然可以读取或创建{.dat固定列ascii数据文件,.sas语法文件}的组合,还是已过时?

时间:2014-05-01 17:27:24

标签: r sas

过去我在R中使用了优秀的SAScii软件包来读取这种类型的数据:{。bit固定列数据文件+相应的.sas“语法”文件}。我想对此非常准确,因为围绕像“SAS文件”这样的短语没有任何歧义。这些.dat文件只包含整数,.sas文件指定解析列的方式整数表示实际数据中的值的方式(此功能有时称为“代码簿”) 。)我从明尼苏达州人口中心的IPUMS https://usa.ipums.org/usa/这样的地方找到了那种格式的非常好的数据(即以文件对{.dat,.sas}的形式),并建立了很多工具来使用R和SAScii进行分析。

现在我可以访问SAS本身,但仍然希望重复使用我的一些工具和技术。但是我在SAS中找不到类似于{.dat中的固定列数据,.sas中的语法文件}的数据。 SAS中是否已完全取代该格式(可能采用SAS7BDAT格式)?或者{.dat,.sas}格式永远不会在 SAS中使用?我问的原因是,既然我可以访问SAS以及SAS7BDAT格式的大量数据,我希望能够以{.dat,.sas}格式导出其中的一些数据,以便与我自己的工具一起使用。

非常感谢,欢呼 - Ed

1 个答案:

答案 0 :(得分:0)

我认为这不是SAS内置的东西。但是,您可以很容易地编写这样的程序。

首先,Chris Hemidinger写了一些基本上这样做的东西(它创建了数据线,而不是.dat文件,但如果你知道.NET和/或修改R模块接受它,那就不应该太难修改)。这已经讨论并可用here。帖子的标题是“将您的数据集转换为数据步骤程序”。这大致相当于从表中创建“创建表”代码的SQL Server任务。这只适用于Enterprise Guide,尽管您应该能够在独立的.NET程序中执行大致相同的操作。

其次,您可以在Base SAS中轻松编写类似的内容。创建数据线很简单,有很多方法可以写出文件。

例如,对于CSV,您可以执行此操作。

ods csv file="c:\temp\mydata.csv";
proc print data=mydata;
run;
ods csv close;

如果你要编写一个平面文件,你可以先输入/输出.sas - 毕竟它几乎可以是相同的代码。您可以查询dictionary.columns以生成代码,包括输入和输出代码。创建一个包含每个变量的变量名称,长度和格式的表,然后在数据步骤中处理它,使start变量按每个变量的长度前进(因此它在最后一个变量完成后移动到下一个位置) )。如果你需要R项目的格式,那么proc format cntlout=<datasetname>将生成一个包含那些格式化值翻译的数据集,你也可以用你需要的任何格式写出来。