过去,我在R中使用了优秀的SAScii包来读取这种类型的数据:{.dat固定列数据文件+相应的.sas“语法”文件}。我想对此非常精确,因为像"SAS文件“这样的短语是没有歧义的。这些.dat文件只包含整数,.sas文件指定了解析列的方式和整数在实际数据中表示值的方式(这个特性有时被称为“代码本”)。我从明尼苏达州人口中心的IPUMS .dat https://usa.ipums.org/usa/这样的地方找到了非常好的数据格式(即文件对{.sas,.sas}),并建立了许多工具来使用R和SAScii来分析它。
现在我可以访问SAS本身,但仍然希望重用我的一些工具和技术。但是,我在SAS中找不到类似于.dat中的{固定列数据、.sas}中的语法文件这样的数据的引用。这种格式是否在SAS中被完全取代(也许被SAS7BDAT格式所取代)?或者可能在SAS中从未使用过{.dat,.sas}格式??我问这个问题的原因是,现在我已经可以访问SAS和这么多的SAS7BDAT格式的数据了,我希望能够导出一些{.dat,.sas}格式的数据,以便与我自己的工具一起使用。
非常感谢,干杯-艾德
发布于 2014-05-01 19:17:12
我不认为这是内置在SAS中的东西。然而,您可以很容易地编写这样的程序。
首先,编写了一些基本做到这一点的东西(它创建了数据链路,而不是.dat文件,但是如果您知道.NET和/或修改R模块来接受,那么修改应该不会太难)。这是讨论和可用的这里。文章的标题是“将数据集转换为数据步骤程序”。这大致相当于Server任务,该任务从表中创建"Create“代码。这只适用于企业指南,尽管您应该能够在独立的.NET程序中做大致相同的事情。
其次,您可以很容易地在Base中编写类似的内容。创建数据线很容易,可以通过多种方式将其写入文件。
例如,对于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>将生成一个包含这些格式化值转换的数据集,您也可以以所需的任何格式写出这些格式。
https://stackoverflow.com/questions/23412995
复制相似问题