合并IN,KEEP,DROP和RENAME语句

时间:2018-10-02 19:41:51

标签: sas

如何结合多个KEEP,DROP和RENAME语句,特别是在将它们与IN语句结合时?例如,似乎只有一个DATA步骤就可以实现以下目的:

data temp;
  set set_1 (keep = key var1-var5);
  run;
data want;
  merge set_2
        temp (in= whatwewant);
  by key;
  if whatwewant;
  run;

我将如何仅执行一个数据步骤?

还有一个类似的问题:例如,如何在数据步骤中结合KEEP和RENAME语句?最近,我遇到了几个实例,在这些实例中,我想合并两组在不同名称中具有不同名称的变量集,但是我只想保留其中任一变量的适当子集。在这种情况下,根据我的知识,当我认为可以在单个步骤中完成此操作时,实际上我需要三个数据步骤来完成此操作。我一直在做这样的事情:

data temp1 (rename = (key1=key));
  set set_1 (keep= key1 var1-var5);
  run;
data temp2 (rename = (key2=key));
  set set_2 (keep=key2 othervar1-othervar4);
  run;
data want;
  merge temp1
        temp2;
  by key;
  run;

同样的问题:我如何在一个数据步骤中做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以将IN,KEEP,DROP或RENAME放在相同括号内的相同选项框中。

在您的第一种情况下:

data want;
  merge set_2
        set_1 (in= whatwewant keep = key var1-var5);
  by key;
  if whatwewant;
run;

第二种情况:

data want;
  merge set_1 (keep= key1 var1-var5 rename = (key1=key))
        set_2 (keep= key2 othervar1-othervar4 rename = (key2=key));
  by key;
run;