我需要转换SAS数据表入平的文件(或"ASCII文件",因为他们被称为一次,而不是二进制文件)。且仅有一个平面文件,对于每个原SAS表。具有挑战性的事情是,我想平面文件包含了一些结构性信息的原始SAS表此外,具体有:

  • 变量的列名
  • 变量/列标签
  • 变量/列类型
  • 变量/列长度
  • 变量/列格式
  • 变量/列信息

额外信息:

  • 我只需要转换的小数据(< 100obs)。
  • 业绩不是一个问题(在合理的限度内).
  • 平面文件应构成一个基础,为重建原来的SAS表,我不需要能够使用的文件直接作为一个表中的数据或程序步骤。

标准SAS表、运输文件、导出的文件,等等都是二进制格式的文件和标准的XML格式表在SAS和CSV-文件不保留表的结构。因此显然这些选项没有帮助。

什么是我最好的选择吗?

有帮助吗?

解决方案

我不知道有任何简单的解决办法。

可能是:

  1. 使用PROC出口产生CSV文件的数据。
  2. 使用PROC数据集与ODS产生的数据集的名称、类型、等等。
  3. 产生的另一个CSV文件对于该数据集。

现在你已经得到了你的ASCII说明表(散布在两个CSV文件)。反转的进程将是更加棘手。基本上你有读取在说明数据集,然后使用呼叫SYMPUT在一个循环创造一大堆的宏观变量与在他们的信息,然后用你的宏观变量来构建进程的进CSV文件...

其他提示

  1. 创建代码的出口表以文本(这是直接的,只是谷歌或看小SAS书'如果你有一个副本)。

  2. 然后追加的'元的信息,从sashelp.vcolumn,这是sas在存储信息(元数据)关于sas数据集。这是一个sas表本身,所以你可以做一个proc sql联盟行动来加入它与实际的列,这表介绍了(虽然你需要做转型操作因为元数据的列是在行,不列)。

你不是完全具体的有关如何你想看到的元数据文本文件,这就是尽我所能去。

proc sql的描述语法可能方便得到的元数据部分,包括长度、种类、格式、编制索引等等...

代码:

proc sql;
describe table sashelp.class;
quit;

日志:

NOTE: SQL table SASHELP.CLASS was created like:

create table SASHELP.CLASS( bufsize=4096 )
  (
   Name char(8),
   Sex char(1),
   Age num,
   Height num,
   Weight num
  );

与SAS9.2,您可以创建一个XML文件从一个数据集和XML包含可变/列元数据、格式、标签、等等。看看这一部分的SAS9.2XML库名称发动机:用户指南,题为"使用XML引擎运输SAS数据组的操作环境".一个链接到它是在这里:

http://support.sas.com/documentation/cdl/en/engxml/61740/HTML/default/a002594382.htm

这是一段代码的手册,显示使用XML92库名称引擎和PROC复制的创建XML:

libname myfiles 'SAS-library';
libname trans xml92 'XML-document' xmltype=export;
proc copy in=myfiles out=trans;
   select class;
run;

在SAS9.1.3,可能必须创建一个自定义的标记集合,获得相同的操作。SAS技术支持(support@sas.com)可能能够提供一些帮助。

顺便说一句-你还没说为什么你需要这样做。在这种情况下,没有很好的理由(有可能是一个令人信服的理由,例如有人用力 说'这样做,或者被解雇,但是没有 很好的 原因).

我给了合并的想法的元数据和数据在每个文件中,除非另有一些令人难以置信的强大的理由这样做。去与出口的元数据数据组成文件中称为metadata_A;这将导致在成对文件。任何人想要利用这些文件在数据库程序或统计方案将有一个明确标记的元数据文件的工作。

如果你只要使用的数据SAS,然后你就可以使用PROC复制,以使运输文件:

http://www.usc.edu/isd/doc/statistics/sas/sastransport/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top