将标头从一个文件分配给多个数据文件

时间:2017-12-07 15:25:11

标签: sas

我有~100个文件的列表。第一个文件包含其他98个数据文件的标头信息。信息应采用表格格式,但每个表的大小不同(关于列号和行号)。

我的目标是导入这些文件,以便正确分配第一个文件中的列标题。

其他信息: 我被告知这个文件列表是使用SAS生成的(但我不熟悉文件格式)此外," CIMPORT"命令对这些文件不起作用。

文件是" |"划定

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是一个有趣的问题。我提出了以下方式:

首先让我们加载一些数据。

proc import datafile = "\\Datadrive\mydata.csv"
    out=w_headers; 
    delimiter=";"; 
    guessingrows=32767;
run;

proc import datafile = "\\Datadrive\no_headers.csv"
    out=no_headers; 
    delimiter=";"; 
    guessingrows=32767;
run;

然后我将列和变量号的名称提取到数据集中。

proc contents data=w_headers out=meta(keep=NAME VARNUM) noprint ; run ; 

然后我创建命令来重命名没有名称的列,以根据现有名称具有适当的名称。那些。

data meta;
    set meta;
    cmd = cats('VAR',VARNUM,'=', name);
run;

这里有踢球者,我把这个奖励放到一个变量上。接下来,变量将被输入proc datasets以重命名列。

proc sql noprint;
        select cmd into :cmd_list separated by ' ' from meta;
    quit;

proc datasets library = work nolist;
       modify no_headers;
       rename &cmd_list;
quit;

此时我的两个数据集具有相同的列名。该方法有点棘手,但有效。我确信还有另一种方式,但这很有趣。 :)