Sas 当数据集中的变量与变量列表匹配时,将数据集子集化

Sas 当数据集中的变量与变量列表匹配时,将数据集子集化,sas,subset,Sas,Subset,我正在处理sas中的一个数据问题。 我有一个日期集,包括1000个变量和每个变量的1000条记录。 我还有另一个变量列表,其中包括100个变量名。 当第一个数据集中的变量名与变量列表匹配时,我想对该数据集进行子集划分 我尝试了procmerge和procsql,但无法解决。 有人能帮我吗 非常感谢SAS使用方便命名的关键字“keep”和“drop”保存或删除变量。如果您还没有文本格式的列表,procsql可以帮助您生成列表 data want; set have; keep var1 var2

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

我尝试了
procmerge
procsql
,但无法解决。 有人能帮我吗


非常感谢

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

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”语句的参数。

您可以找到如何将一个数据集的所有变量名的列表作为另一个数据集输出。这将更容易决定您将使用哪些大数据集,哪些不使用(例如,变量名的左(或右)连接,然后查看行数至少是您希望拥有的变量数)。

我尝试了您的代码作为proc sql;从列表中选择以“”分隔的保留列表;退出但它不起作用。我不知道为什么你没有解释它是如何工作的,我也不知道为什么:)如果你想让别人编写能按预期工作的代码,你应该描述一下表的结构。样本数据将是完美的。