BookmarkSubscribeRSS Feed
MB123
Calcite | Level 5

HI All

 

Need some help in particular requirement, I am very new SAS user.

I have data like this

value          key

abc             1

bed             2

 daf             1

trewr           1

fdsfds          1

fdsfsd          2

eqre             2

fdsfds          3

dsfds           3

 

I need to split the file into 3 files-  if the key has more or equal to 4 rows then one file, if the key has 2-3 rows then one file, if key has less than 2 rows then another file. 

Key values can be anything. I want to know how can I count the rows for each unique value of the key field and split the file.

2 REPLIES 2
kiranv_
Rhodochrosite | Level 12

something like this in proc sql

proc sql;
create table want1 as
select * from have
group by key
having count(Key) ge 4;
create table want2 as
select * from have
group by key
having count(Key) between 2 and 3;
create table want3 as
select * from have
group by key
having count(Key) =  1  ;
quit;
PeterClemmensen
Tourmaline | Level 20
data have;
input value$ key;
datalines;
abc    1
bed    2
daf    1
trewr  1
fdsfds 1
fdsfsd 2
eqre   2
fdsfds 3
dsfds  3
;

proc sort data = have;
   by key;
run;

proc freq data = have noprint;
   tables key / nocum out = freqtable(drop = percent);
run;

data one twothree fourmore;
   merge have freqtable;
   by key;
   if count = 1 then output one;
   else if count in (2,3) then output twothree;
   else output fourmore; 
   drop count;
run;
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
  • 2 replies
  • 1233 views
  • 1 like
  • 3 in conversation