data ds;
infile datalines;
input name$ a$ b$ c$ d$ e$ f$;
datalines;
vnod yes no no no no yes
jag no yes no yes no yes
raki yes yes yes yes yes no
;
run;
data ds;
infile datalines;
input name$ a$ b$ c$ d$ e$ f$;
datalines;
vnod yes no no no no yes
jag no yes no yes no yes
raki yes yes yes yes yes no
;
run;
i need this dataet as output:
name a b c d e f count(yes)
vnod yes no no no no yes 2
jag no yes no yes no yes 3
raki yes yes yes yes yes no 5
i need to create a column count the row wise 'yes' from a to f columns. kindly help me.
Thank you
Or:
data WANT;
set HAVE;
COUNT=countw(catx(' ',A,B,C,D,E,F), 'yes');
run;
One way
data want(drop=i);
set ds;
array MyArray $ a--f;
count=0;
do i=1 to dim(MyArray);
if MyArray[i]='yes' then count+1;
end;
run;
data want;
set ds;
array cnt{*} a--f;
count=count(catx('',of cnt[*]),'yes');
run;
Or:
data WANT;
set HAVE;
COUNT=countw(catx(' ',A,B,C,D,E,F), 'yes');
run;
Oh I misrepresented COUNTW().
This works.
data ds;
infile datalines;
input NAME$ A$ B$ C$ D$ E$ F$;
COUNT=count(catx(' ',of A--F), 'yes'); putlog COUNT=;
datalines;
vnod yes no no no no yes
jag no yes no yes no yes
raki yes yes yes yes yes no
run;
COUNT=2
COUNT=3
COUNT=5
Which does the same as
COUNT=count(catx(' ',A,B,C,D,E,F), 'yes'); putlog COUNT=;
Thread title changed from "sas" to "count values in an observation"
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.