BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.

Hi,

Is there a SAS fucntion to check whether the field value is numeric or decimal. Please anyone can advise?

Regards,

Siva

1 ACCEPTED SOLUTION

Accepted Solutions
Rick_SAS
SAS Super FREQ

if int(TOTAL_SUM) ^= TOTAL_SUM then

   TOTAL_SUM = TOTAL_SUM*100;

View solution in original post

8 REPLIES 8
Rick_SAS
SAS Super FREQ

Can you explain more and give an example? Do you mean integer values versus having a decimal part?

If so, you can test whether int(x)=x.

sivaram_veerabagu
Calcite | Level 5

Hi Rick,

For e.g If I have the values for the column in the dataset as follows.

TOTAL_SUM

156

134.67

147

190.00

I need to find if the value of TOTAL_SUM is decimal then I have to do some manipulation based on that?

Reeza
Super User

What is your definition of decimal? What manipulation do you need to do? What do you want your output to look like?

sivaram_veerabagu
Calcite | Level 5

Hi Reeza,

For e.g If have a decimal point(.) in the value then I would like to multiply only those value with 100.

Regards,

Siva

Rick_SAS
SAS Super FREQ

if int(TOTAL_SUM) ^= TOTAL_SUM then

   TOTAL_SUM = TOTAL_SUM*100;

sivaram_veerabagu
Calcite | Level 5

Hi Reeza,

For e.g the following decimal values have to be multiplied by 100.

134.67 -> 134.67 *100 -> 13467


Regards,

Siva

MadhuKorni
Quartz | Level 8

Irrespective of the number of decimal places,if you want to multiply the number with 100 then you can use the following code.

data Want;

input Total_Sum;

if scan(Total_Sum,2,'.') ne " " then Total_Sum=Total_Sum*100;

cards;

156

134.67

147

190.00

;

If there is condition on which the number should be multiplied basing on the number of decimal places(i.e multiply with 100 if the value has two decimal places and 10 for 1 decimal place ....) then you can use the following code

data Want;

input Total_Sum;

if lengthn(scan(Total_Sum,2,'.')) ge 2 then Total_Sum=Total_Sum*100;

if lengthn(scan(Total_Sum,2,'.')) eq 1 then Total_Sum=Total_Sum*10;

cards;

156

156.1

134.67

147

190.00

;

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 8 replies
  • 16737 views
  • 3 likes
  • 4 in conversation