DATA Step, Macro, Functions and more

Proc Transpose wide to long

Accepted Solution Solved
Reply
Regular Contributor
Posts: 151
Accepted Solution

Proc Transpose wide to long

I'm trying to transpose a table using the code below. The problem is that a person can have multiple encounters on the same day. The output from the code below puts same-day info into separate columns. Is there some trick to getting SAS to stack all the Diagnosis_1-Diagnosis_10 info into a single column?

 

proc transpose data=TBI_temp out=TBI_transposed;

  by Person_ID Encounter_Date;

  var Diagnosis_1-Diagnosis_10 ;

run;

 

Thanks,

Brian


Accepted Solutions
Solution
‎06-15-2016 05:19 PM
Esteemed Advisor
Posts: 5,532

Re: Proc Transpose wide to long

Proc Transpose doesn't have a mechanism to transpose by OBS when there is no obs unique ID. It is simpler to do the transpose explicitly in a data step.

 

data TBI_transposed;
set TBI_temp;
array d  Diagnosis_1-Diagnosis_10;
do i = 1 to dim(d);
	Diagnosis = d{i};
	output;
	end;
keep Person_ID Encounter_Date Diagnosis;
run;

(untested)

PG

View solution in original post


All Replies
Solution
‎06-15-2016 05:19 PM
Esteemed Advisor
Posts: 5,532

Re: Proc Transpose wide to long

Proc Transpose doesn't have a mechanism to transpose by OBS when there is no obs unique ID. It is simpler to do the transpose explicitly in a data step.

 

data TBI_transposed;
set TBI_temp;
array d  Diagnosis_1-Diagnosis_10;
do i = 1 to dim(d);
	Diagnosis = d{i};
	output;
	end;
keep Person_ID Encounter_Date Diagnosis;
run;

(untested)

PG
Regular Contributor
Posts: 151

Re: Proc Transpose wide to long

Thanks!

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 1896 views
  • 0 likes
  • 2 in conversation