У меня есть таблица (Student_classification) с двумя столбцами: Номер студента и Тема (пример):
Student Number Subject
122 Biology_Physics
122 Math
122 Music
125 music
125 geography
298 Math
298 Economics
Моя задача - получить новую таблицу, где:
- если номер студента имеет значение Biology_Physics и (либо Math, либо Musi c, либо география, либо экономика) как Science
- , если номер студента имеет (geography или musi c) и не имеет другого как Humnity / Arts
- , если студент имеет (математику или экономику) и не имеет другого как EconomicsEngineering
Мой окончательный результат должен быть:
Student Number Type
122 Science
125 Humanity/arts
298 EconomicsEngineering
Однако, Я получаю следующую таблицу, которая неверна:
Student_Number Type
122 Other
122 EconomicEngineering
122 Humanity/arts
125 Humanity/arts
298 EconomicEngineering
Я написал следующий код в SAS, но логика кажется неверной:
Proc Sql;
create table student_classification as
(
select distinct cust_num,
case
when Subject ='Biology_Physics' and Subject in ('Math' 'Music' 'geography' 'economics') then 'Science'
When Subject in ('geography' 'music') and Subject not in ('Biology_Physics' 'Math' 'economics') then 'Humanity/arts'
When Subject in ('math' 'economics) and subject not in ('Biology_Physics' 'Geography' 'Music') then 'EconomicEngineering'
else 'Other'
end as Type
from Student_classification
Group by student_number, Type
);
quit;
Мой вариант использования отличается, но имитирует похожая идея здесь.