Как установить подмножество данных и установить значения на основе совпадающих дат - PullRequest
0 голосов
/ 24 июня 2019

У меня есть таблица как:

id - дата ------------ значение

x --- 01/01/2019 ---- 1

y --- 01.01.2009 ---- 2

x --- 01/02/2019 ---- 1

z --- 01/03/2019 ---- 1

Я пытаюсь выбрать where id in (x,y)

Затем, когда у меня есть это подмножество, я хочу проверить, есть ли у x соответствующий y той же даты

  • если это так, то я хочу установить new на value из строки с этой датой и id=y - для x и y;
  • в противном случае new просто устанавливается на value

чтобы стол стал

id - дата ------------ значение - новый

x --- 01/01/2019 ---- 1 -------- 2

y --- 01/01/2019 ---- 2 -------- 2

x --- 01/02/2019 ---- 1 -------- 1

z --- 01/03/2019 ---- 1 -------- 1

Я совершенно не уверен, как это сделать,

Я начал с поднабора своих данных:

IF id='x' OR id='y' THEN DO;

/*...*/

END;

ELSE new=value;

любая помощь будет оценена

Кроме того, я не могу использовать фактические даты в своем коде Мне не нужно обобщать идентификатор, я точно знаю, что мне нужно сравнивать / проверять x и y (y - продолжение x в данных, которые я использую)

1 Ответ

0 голосов
/ 29 июня 2019

Я недавно ответил на аналогичный вопрос.Базовый SAS не очень удобен для подобных задач - решение его с помощью шагов DATA включает в себя сортировку в правильном порядке, затем чтение в BY группах и retain данные по строкам.

Этопроще в SQL: ожидаемый результат, который вы описали, может быть получен ЛЕВЫМ СОЕДИНЕНИЕМ исходной таблицы (T) с ее подмножеством (Y) (где id = y) на date.После присоединения new можно рассчитать как coalesce(Y.value, T.value)

...