我有~100个文件的列表。第一个文件包含其他98个数据文件的标头信息。信息应采用表格格式,但每个表的大小不同(关于列号和行号)。
我的目标是导入这些文件,以便正确分配第一个文件中的列标题。
其他信息: 我被告知这个文件列表是使用SAS生成的(但我不熟悉文件格式)此外," CIMPORT"命令对这些文件不起作用。
文件是" |"划定
非常感谢您的帮助。
答案 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;
此时我的两个数据集具有相同的列名。该方法有点棘手,但有效。我确信还有另一种方式,但这很有趣。 :)