1

我正在处理 sas 中的一个数据问题。我有一个数据集,包括 1000 个变量和每个变量的 1000 条记录。我还有另一个变量列表,其中包括 100 个变量名称。当该数据集中的变量名称与变量列表匹配时,我想对第一个数据集进行子集化。

我试过proc mergeand proc sql,但无法解决。任何人都可以帮助我吗?

非常感谢

4

2 回答 2

2

SAS 使用方便命名的关键字“keep”和“drop”来保留或删除变量。如果您还没有文本格式的列表,PROC SQL 可以帮助您生成列表。

data want;
set have;
keep var1 var2 var3 var4;
run;

如果数据集“vnames”中的变量列表带有变量“tokeep”,则可以执行以下操作:

proc sql;
select tokeep into :keeplist separated by ' ' from vnames;
quit;

data want;
set have;
keep &keeplist.;
run;

PROC SQL 正在获取 'tokeep' 的内容,而不是将它们选择到表或屏幕上,而是将它们放在宏变量 'keeplist' 内的空格分隔列表中,然后将其用作 'keep' 的参数陈述。

于 2013-01-18T20:47:41.090 回答
0

Here you can find how to output a list of all the variable names of a dataset as another dataset. This will make it way easier to decide which of the big datasets you will use and which you will not (e.g. a left (or right) join of variable names, then look at the number of rows is at least the count of variables which you want to have).

于 2013-01-23T07:54:30.940 回答