SAS中如何指定变量名行、起始数据行并导入目标文本文件
调整后的SAS代码实现需求
proc import datafile="windows/user/data_set.txt" dbms=dlm out=data_set_temp replace; namerow=4; /* 指定第4行作为变量名 */ datarow=7; /* 指定从第7行开始读取数据 */ delimiter=';'; getnames=yes; /* 启用读取变量名 */ run; /* 删除最后3行空行,保留有效数据 */ data data_set; set data_set_temp; /* 过滤掉所有变量均为空的行 */ if n(of _all_) > 0; run;
代码修改说明
namerow=4:指定文本文件第4行作为数据集变量名,自动读取y2011、y2012等年份格式的变量名。getnames=yes:配合namerow启用变量名读取功能,替换原代码的getnames=no。- 临时数据集
data_set_temp:先导入所有行(含末尾空行),再通过DATA步过滤无效空行。 if n(of _all_) > 0:判断当前行是否存在非空变量,过滤掉所有变量为空的行(即末尾3行空行)。
如果已知有效数据的总行数(原文本中有效数据共4行),也可直接在PROC IMPORT中指定读取范围,跳过末尾空行:
proc import datafile="windows/user/data_set.txt" dbms=dlm out=data_set replace; namerow=4; datarow=7; obs=10; /* 仅读取到第10行(最后一行有效数据) */ delimiter=';'; getnames=yes; run;
内容的提问来源于stack exchange,提问作者Elise
相关产品推荐
相关产品推荐

