BookmarkSubscribeRSS Feed
venkatnaveen
Obsidian | Level 7

Hi frnds...
I have a problem that could be a simple one.
In a dataset I have two variables id and spend
like
data a;
input id spend;
cards;
1 100
1 200
1 300
2 150
2 690
;
run;

I want output like

id jan feb mar
1 100 200 300
2 150 690 .

through arrays

2 REPLIES 2
art297
Opal | Level 21

already answered this exact same question earlier this morning:

data have;

input id spend;

cards;

1 100

1 200

1 300

2 150

2 690

;

run;

data want;

set have;

by id;

array x{*} jan feb mar;

retain jan feb mar     ;

if first.id then do;n=0;call missing(of x{*});end;

n+1;

x{n}=spend;

if last.id;

drop n spend;

run;

data_null__
Jade | Level 19

This is a good problem to show how we can apply DO UNTIL(LAST DOT to "simplify" the code.

data have;
   input id spend;
   cards;
1 100
1 200
1 300
2 150
2 690
;;;;
   run;
data m(drop=spend);
   do _n_ = 1 by 1 until(last.id);
      set have;
      by id;
      array m[3] jan feb mar;
      m[_n_] = spend;
     
end;
  
run;
proc print;
  
run;

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

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!

Register now

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 2 replies
  • 1544 views
  • 1 like
  • 3 in conversation