BookmarkSubscribeRSS Feed
JohnnyCanuck
Calcite | Level 5

Been a while since I tried this sort of thing with SAS -- probably easy, but at the risk of admitting same...

Suppose I have the following file

Fred     4

Janice   3

James    5

What I'd like to do is take this data set, and re-write it, as follows:

Fred   1

Fred   1

Fred   1

Fred   1

Janice 1

Janice 1

Janice 1

James  1

James  1

James  1

James  1

James  1

In other words, the right-hand field in the original data st is the frequency with which I want to repeat the user (first field) in the new file. So, I want 'Fred' to show up 4 times, Janice 3 times, and James 5 times. And, at the end of each record, the number '1'. 

1 REPLY 1
PGStats
Opal | Level 21

Easy indeed. This kind of expansion is rarely needed within SAS. Check the FREQ statement available in most SAS procedures.

data have;

input name $ freq;

datalines;

Fred     4

Janice   3

James    5

;

data want;

set have;

one = 1;

do i = 1 to freq;

    output;

    end;

drop freq i;

run;

PG

PG
How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 783 views
  • 0 likes
  • 2 in conversation