DATA Step, Macro, Functions and more

Proc Transpose wide to long

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 126
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
Respected Advisor
Posts: 4,925

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
Respected Advisor
Posts: 4,925

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
Frequent Contributor
Posts: 126

Re: Proc Transpose wide to long

Thanks!

☑ This topic is solved.

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

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