Help using Base SAS procedures

create cross table containing the row which are all zero

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 14
Accepted Solution

create cross table containing the row which are all zero

according to the following code

Data t;

INPUT  x        y;

cards;

0       1

0       1

0       0

0       0

;

Proc freq data=t ;

Table x*y/nopercent norow;

Run;         

then i will get a results

Table of x by y

    x y

    0 1

0  2 2       

However, if i want to get the result containing the zero number of x of 1 although it is not appear in my data set like this

Table of x by y

    x y

    0 1

0  2 2      

1  0 0

how can i do?

i try the order statement for proc freq, but i still cannot get the result i want.


Accepted Solutions
Solution
‎08-16-2015 12:15 AM
Super User
Posts: 9,687

Re: create cross table containing the row which are all zero

proc freq can't do that. Try proc tabulate.

Code: Program

Data t;
INPUT  x   y;
cards;
0 1
0 1
0 0
0 0
;
run;
data classdata;
do x=0,1;
  do y=0,1;
   output;
  end;
end;
run;
proc tabulate data=t classdata=classdata ;
class x y;
table x,y /misstext='0' ;
keylabel n=' ';
run;  

View solution in original post


All Replies
Solution
‎08-16-2015 12:15 AM
Super User
Posts: 9,687

Re: create cross table containing the row which are all zero

proc freq can't do that. Try proc tabulate.

Code: Program

Data t;
INPUT  x   y;
cards;
0 1
0 1
0 0
0 0
;
run;
data classdata;
do x=0,1;
  do y=0,1;
   output;
  end;
end;
run;
proc tabulate data=t classdata=classdata ;
class x y;
table x,y /misstext='0' ;
keylabel n=' ';
run;  
Occasional Contributor
Posts: 14

Re: create cross table containing the row which are all zero

very useful. thx.

Super User
Posts: 9,687

Re: create cross table containing the row which are all zero

Sorry. As the matter of fact , PROC FREQ can do that.

Code: Program

Data t;
INPUT  x   y;
cards;
0 1
0 1
0 0
0 0
;
run;
data temp;
do x=0,1;
  do y=0,1;
   output;
  end;
end;
run;

data want;
set t(in=ina) temp;
w=ina;
run;
proc freq data=want;
table x*y /nocol norow nopercent;
weight w /zeros;
run;

x.png

Xia Keshan

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

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