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.
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;
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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.