LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (January 2003, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 13 Jan 2003 09:04:51 -0800
Reply-To:     "Huang, Ya" <yhuang@AMYLIN.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "Huang, Ya" <yhuang@AMYLIN.COM>
Subject:      Re: Identify the Interge variable
Comments: To: Jerry <yhow29@MSN.COM>
Content-Type: text/plain; charset="iso-8859-1"

Jerry,

To test whether a number is integer, you can use mod function. If mod(a,1)=0, a is a integer, otherwise, it is not. Now this is for each individual value of variable a, your problem is to find if all the value of a is integer, my algorithms is to find the max of all the remainder of a, and the min of all the remainder of a, if they all equals to 0, then the variable a is an integer, this can be done by one simple proc sql step. The data step in the following code, is just to transpose the data so that it match your sample's layout:

data xx; input a b; cards; 1 1.3 4 7.9 0 9.8 4 9.1 ;

options nocenter; proc sql; create table intnum as select case when max(mod(a,1))= 0 and min(mod(a,1))= 0 then 'yes' else 'no' end as aflag, case when max(mod(b,1))= 0 and min(mod(b,1))= 0 then 'yes' else 'no' end as bflag, case when calculated aflag='yes' then count(distinct a) else . end as anum, case when calculated bflag='yes' then count(distinct b) else . end as bnum from xx ;

proc print; run;

data intnum; set intnum; varname='a'; integer=aflag; num=anum; output; varname='b'; integer=bflag; num=bnum; output; keep varname integer num; run;

proc print; run;

-------------------- Obs aflag bflag anum bnum

1 yes no 3 .

Obs varname integer num

1 a yes 3 2 b no .

HTH

Ya Huang

-----Original Message----- From: Jerry [mailto:yhow29@MSN.COM] Sent: Monday, January 13, 2003 8:12 AM To: SAS-L@LISTSERV.UGA.EDU Subject: Identify the Interge variable

Dear All:

I got a problem to create a macro. I need a macro to identify interge variables from a data set. for example:

a b 1 1.3 4 7.9 0 9.8 4 9.1 ;

For each interge variable I also need to know how many unique value the variable has. Finally, I want to create a dataset like:

VarName Interge Num a yes 3 b no . ;

Thanks a lot. Jerry


Back to: Top of message | Previous page | Main SAS-L page