Hi All,
I have a table as follows
| F1 | F2 |
| ACC_STATUS | 1 |
| ACC_STATUS | 1 |
| ACC_STATUS | 1 |
| ACC_STATUS | 3 |
| ACC_STATUS | 1 |
| ACC_STATUS_DESC | Closed |
| ACC_STATUS_DESC | Active |
| ACC_STATUS_DESC | Active |
| ACC_STATUS_DESC | Active |
| ACC_STATUS_DESC | Active |
and i need below output
| ACC_STATUS | ACC_STATUS_DESC |
| 1 | Closed |
| 1 | Active |
| 1 | Active |
| 3 | Active |
| 1 | Active |
data want;
merge
have (
rename=(f2=acc_status)
where=(f1 = "ACC_STATUS")
)
have (
rename=(f2=acc_status_desc)
where=(f1 = "ACC_STATUS_DESC")
)
;
drop f1;
run;
This doesn't seem like a transpose to me. This ought to work (although I have made a lot of assumptions)
data want;
merge have(where=(f1='ACC_STATUS') rename=(f2=acc_status))
have(where=(f1='ACC_STATUS_DESC') rename=(f2=acc_status_desc));
drop f1;
run;
Yes, it looks rather like a table transformation from long format to wide format, than a Transpose.
To use PROC TRANSPOSE you will need to have another variable that indicates which rows go together.
data have;
row+1;
input f1 :$32. f2 :$32. ;
if f1 ne lag(f1) then row=1;
cards;
ACC_STATUS 1
ACC_STATUS 1
ACC_STATUS 1
ACC_STATUS 3
ACC_STATUS 1
ACC_STATUS_DESC Closed
ACC_STATUS_DESC Active
ACC_STATUS_DESC Active
ACC_STATUS_DESC Active
ACC_STATUS_DESC Active
;
Then you can use that as a BY variable.
proc sort;
by row f1 ;
run;
proc transpose data=have out=want(drop=_name_);
by row;
id f1;
var f2;
run;
Result
ACC_ ACC_STATUS_ Obs row STATUS DESC 1 1 1 Closed 2 2 1 Active 3 3 1 Active 4 4 3 Active 5 5 1 Active
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.