You need to sort the source data by date and keep the last observation.
data HAVE(index=(A=(NAME TRANS_MONTH DATE)));
input NAME $ TRANS_MONTH $ FILE_ATTACH $;
DATE=input(substr(FILE_ATTACH,4),monyy5.);
cards;
A 01 QQQFEB2207:54
A 01 QQQFEB2002:54
A 04 DDDMAR0112:01
B 01 DDDJAN1807:00
B 05 YYYSEP0111:10
B 05 GGGOCT1108:21
;
data FILTERED;
set HAVE;
by NAME TRANS_MONTH DATE;
if last.TRANS_MONTH;
run;
Something like this should help.
data HAVE;
input NAME $ TRANS_MONTH $ FILE_ATTACH $;
cards;
A 01 QQQ
A 02 BBB
A 04 DDD
B 01 DDD
B 02 YYY
B 05 GGG
;
proc transpose data=HAVE out=TRANS prefix=MTH;
by NAME;
id TRANS_MONTH;
var FILE_ATTACH;
run;
data WANT;
array M [12] $8 MTH01 - MTH12 ;
set TRANS ;
do I=1 to 12;
if missing(M[I]) then M[I]='X';
end;
run;
Please adapt to your needs.
| Obs | NAME | MTH01 | MTH02 | MTH03 | MTH04 | MTH05 | MTH06 | MTH07 | MTH08 | MTH09 | MTH10 | MTH11 | MTH12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | A | QQQ | BBB | X | DDD | X | X | X | X | X | X | X | X |
| 2 | B | DDD | YYY | X | X | GGG | X | X | X | X | X | X | X |
No worries. Note the code used to create table HAVE. That's how you should provide data. A table is not useful to recreate your problem.
data HAVE;
input NAME $ TRANS_MONTH $ FILE_ATTACH $;
cards;
A 01 QQQFEB2207:54
A 01 QQQFEB2002:54
A 04 DDDMAR0112:01
B 01 DDDJAN1807:00
B 05 YYYSEP0111:10
B 05 GGGOCT1108:21
;The output should be something like this:Obs NAME MTH01 MTH02 MTH03 MTH04 MTH05 MTH06 MTH07 MTH08 MTH09 MTH10 MTH11 MTH121 A QQQFEB2207:54 X X DDDMAR0112:01 X X X X X X X X2 B DDDJAN1807:00 X X X GGG1108:21 X X X X X X XThank you so much and have a great day ahead.
maricelj
You need to sort the source data by date and keep the last observation.
data HAVE(index=(A=(NAME TRANS_MONTH DATE)));
input NAME $ TRANS_MONTH $ FILE_ATTACH $;
DATE=input(substr(FILE_ATTACH,4),monyy5.);
cards;
A 01 QQQFEB2207:54
A 01 QQQFEB2002:54
A 04 DDDMAR0112:01
B 01 DDDJAN1807:00
B 05 YYYSEP0111:10
B 05 GGGOCT1108:21
;
data FILTERED;
set HAVE;
by NAME TRANS_MONTH DATE;
if last.TRANS_MONTH;
run;
CrizNZ,
Thank you so much. It works.
Have a great day and keep safe.
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.