在sas中从数据集中动态选择变量

在sas中从数据集中动态选择变量,sas,sas-macro,Sas,Sas Macro,我正在尝试读取具有如下列的数据集: 1000 10001 1002 2000 2002 2004 2006 a b c d e f g b c d e f g h 列名的格式为number。我需要读取此数据并动态选择列,比如说,我只想读取2000到2004列。如果您在SAS中使用proc import,它将通过添加“40;下划线)前缀自动将数字字段名转换为字符。假设您的文件以制表符分隔,则以下简单代码将起作用: pro

我正在尝试读取具有如下列的数据集:

1000 10001 1002 2000 2002 2004 2006
a    b     c    d    e    f    g
b    c     d    e    f    g    h

列名的格式为number。我需要读取此数据并动态选择列,比如说,我只想读取2000到2004列。

如果您在SAS中使用proc import,它将通过添加“40;下划线)前缀自动将数字字段名转换为字符。假设您的文件以制表符分隔,则以下简单代码将起作用:

proc import datafile="Y:\Temp\numbers.txt" /*Name/Path of your text file*/
dbms=dlm
out=mydata
replace;
delimiter='09'x; /*Tab Delimiter*/
getnames=yes;
run;

proc print data=mydata; run;
您将获得以下输出:


一旦有了所需的数据集,就可以保留/删除所需的变量。

我不知道您到底想要什么。但是动态获取变量的方法有很多,你的问题还不清楚。此数据是否在SAS数据集中?(我怀疑不是,SAS变量名不能是数字)。您试图读入SAS数据集的是文本文件吗?动态选择要读取的列是什么意思?另外,展示您尝试过的代码,并描述它是如何工作的。