Объединение операторов IN, KEEP, DROP и RENAME - PullRequest
0 голосов
/ 02 октября 2018

Как можно объединить несколько операторов 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 голосов
/ 02 октября 2018

Вы можете поместить 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;
...