Как я могу использовать proc sql для удаления всех строк определенных идентификаторов в соответствии с определенным значением другой переменной? - PullRequest
0 голосов
/ 02 июля 2019

Например, я хочу удалить все строки определенного идентификатора, если идентификатор имеет Op = 1 в любом наблюдении.

Я хочу изменить следующий набор данных (Данные1) на Данные2.

Пример:

Example

Я использовал только версию SAS EG для своих задач, и этот процесс не мог быть выполнен для меня. Заранее большое спасибо.

1 Ответ

0 голосов
/ 02 июля 2019

Существует два решения этой проблемы: сначала используйте шаг данных.Это работает путем слияния таблицы с самой собой, но во второй раз только со строками, которые вам не нужны.Сохраняйте только те идентификаторы строк, которых нет в подмножестве.

data data2;
  merge data1 data1(keep=id op where=(_op=1) rename=(op=_op) in=i);
  by id;
  if ^i;
  drop _op;
run;

Другой способ - использовать sql для создания нового набора данных с идентификатором, который не входит в подмножество, сгенерированное аналогично подходу 1.

proc sql;
  create table data2 as select * from data1 where id not in(select id from data1 where op=1);
quit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...