Use HaiKuo's data and partial code . Your second one is ambiguous. you want all of CHIEF_COMPLAINT be NULL and all of DIAGNOSIS_TEXT not be NULL ? CHIEF_COMPLAINT is null, but DIAGNOSIS_TEXT is NOT null - 0 data have;
infile cards expandtabs;
input (UNIQUE_VISITING_ID PATIENT_CLASS CHIEF_COMPLAINT) (:$20.) DIAGNOSIS_TEXT & $20.;
cards;
A E NULL NULL
A E CP NULL
A E CP NULL
A I CP HEART ATTACK
A I CP HEART ATTACK
B E shortbreath NULL
B E shortbreath NULL
B E shortbreath NULL
B E SHORTBREATH NULL
C I CHECK UP DEFICIENT FE
C I CHECK UP DEFICIENT FE
D U NULL NULL
E E NULL NULL
E E CP NULL
E O CP POOR SURGERY
E O CP POOR SURGERY
F E NULL NULL
F E NULL NULL
;
run;
proc sql;
create table x as
select UNIQUE_VISITING_ID,((sum( DIAGNOSIS_TEXT eq 'NULL') eq count(*)) and
(sum(CHIEF_COMPLAINT eq 'NULL') eq count(*)) ) as flag1,
((sum( DIAGNOSIS_TEXT ne 'NULL') eq count(*)) and
(sum(CHIEF_COMPLAINT eq 'NULL') eq count(*)) ) as flag2,
(sum( PATIENT_CLASS eq 'E') ge 1) as flag3,
(sum( PATIENT_CLASS eq 'E') eq 0) as flag4
from have
group by UNIQUE_VISITING_ID ;
quit;
/*THIS REMOVES GROUP NEVER E*/
PROC SQL;
CREATE TABLE WANT AS
SELECT * FROM HAVE
GROUP BY UNIQUE_VISITING_ID
HAVING SUM(PATIENT_CLASS EQ 'E') >0
;
QUIT;
Xia Keshan Message was edited by: xia keshan
... View more