我正在处理 sas 中的一个数据问题。我有一个数据集,包括 1000 个变量和每个变量的 1000 条记录。我还有另一个变量列表,其中包括 100 个变量名称。当该数据集中的变量名称与变量列表匹配时,我想对第一个数据集进行子集化。
我试过proc merge
and proc sql
,但无法解决。任何人都可以帮助我吗?
非常感谢
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' 的参数陈述。
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).