Мне нужна помощь, чтобы удовлетворить приведенное ниже требование
Currentdataset (имя набора данных: SAS1):
product_no product_type status1 status2
12345 3 x 0
12345 1 x 1
123456 3 x 1
123456 6 x 0
9876 3 x+1 0
9876 1 x+1 0
Таким образом, в основном, в приведенном выше наборе данных, если status2=1 and status1='x' and product_type<>3
, то для обе строки, status1
должно быть 'nr'
. если status2=1 and status1='x' and product_type=3
, то для обеих строк status1
должно быть 'x+1'
. если status2=0 and status1='x+1'
, то для обеих строк значение status1
должно быть 'x+1'
Желаемый вывод (имя набора данных: SAS2):
product_no product_type status1 status2
12345 3 nr 0
12345 1 nr 1
123456 3 x+1 1
123456 6 x+1 0
9876 3 x+1 0
9876 1 x+1 0
КОД ПРОВЕРЕН, НО ЭТО СДЕЛАНО ' T WORK:
proc sql;create table sas2 as
select
a.*,
case
when status2=0 and status1='x+1' then 'x+1'
WHEN status2=1 and status1='x' and product_type=3 then 'nr'
WHEN status2=1 and status1='x' and product_type ne 3 then 'x+1'
WHEN status2=1 and status1='NotActive' then 4
END AS status3 FROM sas1 AS a;quit;
Приведенный выше код не работает. Так, например, для product_no = 12345 условие выполняется только для этой конкретной строки, а не для всей группы. Таким образом, для product_no = 12345 столбец status1 = 'nr' должен быть заполнен для обеих строк, а не только для одной.