Складирование данных в SAS - PullRequest
2 голосов
/ 02 апреля 2012

Я хочу составить этот тип моего набора данных:

PATIENT_ID  AA BB CC DD EE  
1           22 33 44 55 66  
2           77 88 99 10 11  
...         .. .. .. .. .. 

в следующее:

 PATIENT_ID GROUP VALUE  
 1          AA    22  
 1          BB    33  
 1          CC    44  
 1          DD    55  
 1          EE    66  
 2          AA    77  
 2          BB    88  
 2          CC    99  
 2          DD    10  
 2          EE    11  
 ...        ..    ..

чтобы проверить нормальность для всех групп, поскольку они зависимы / связаны.

Как это сделать в SAS? Спасибо.

Ответы [ 2 ]

5 голосов
/ 03 апреля 2012

Использование proc transpose:

data pats;
    input PATIENT_ID  AA BB CC DD EE;
    cards;
1 22 33 44 55 66  
2 77 88 99 10 11
;
run;

proc transpose data=pats out=pats_long;
    by patient_id;
run;
4 голосов
/ 03 апреля 2012

Как показала @itzy, proc transpose был создан для этих типов задач реструктуризации данных и, вероятно, вы захотите его использовать.

В интересах полноты, я покажу, как вы можете достичьтот же результат с более ручным подходом, использующим только шаг данных.

data short;
    input PATIENT_ID  AA BB CC DD EE;
    cards;
1 22 33 44 55 66  
2 77 88 99 10 11
;
run;

data long(keep= PATIENT_ID GROUP VALUE);
  set short;
  array vars(*) AA--EE;
  do i=1 to dim(vars);
    GROUP=vname(vars(i));
    VALUE=vars(i);
    output;
  end;
run;

proc print data=long noobs;run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...