База SAS - Proc SQL - PullRequest
       11

База SAS - Proc SQL

0 голосов
/ 11 января 2019

Требуется БАЗА SAS - PROC SQL Code . У меня есть таблица со следующими данными

ID Contact          Preference_ID
1  1111111111       Preference1
1  Test1@test.com   Preference2
1  3333333333       Preference4
2  4444444444       Preference1
2  Test5@test.com   Preference5

Здесь у меня есть столбцы ID, Mobile, Email и Preference_ID. Столбец Preference_ID может принимать значения от Preference1 до Preference5

Я хочу написать Base SAS - Proc SQL Query , который может дать мне данные в следующем формате

ID Preference1 Preference2    Preference3 Preference4 Preference5
1  1111111111  test@test.com              3333333333
2  4444444444                                        Test5@test.com

Означает, что строка Preference_ID должна стать столбцом выходных данных, а контактные данные должны быть заполнены по строке в соответствии с идентификатором.

1 Ответ

0 голосов
/ 11 января 2019

используйте proc tranpose как @Tom. Это легко. Proc SQL потребует много жесткого кодирования.

data have;
 input ID Contact:$20.       Preference_ID:$11.;
datalines;
1  1111111111       Preference1
1  Test1@test.com   Preference2
1  3333333333       Preference4
2  4444444444       Preference1
2  Test5@test.com   Preference5
;



proc transpose data = have out=want(drop=_name_);
by id; id preference_id;
var contact;
run;



 proc sql;
 create table want as 
 select id,
   max(case when Preference_ID="Preference1" then contact end) as Preference1,
   max(case when Preference_ID="Preference2" then contact end) as Preference2,
   max(case when Preference_ID="Preference3" then contact end) as Preference3,
   max(case when Preference_ID="Preference4" then contact end) as Preference4,
   max(case when Preference_ID="Preference5" then contact end) as Preference5
from have
group by id
 ; 
...