BookmarkSubscribeRSS Feed
sasbanker
Calcite | Level 5

I have two Char fields with a length of 10, named "Acct" and "Derived". 

I need to test the "Acct" field, and if the value has a length of 6, and is a numeric value between 100,000 & 999,999, then copy the value to the "Derived" field.

How to code the Update statement?

Sample data looks like this:

Acct

==========

1

100

1000A

201000     ==> Copy

210000A

312456   ==> Copy

A400010

I'm a newbie just learning, so please be specific in your response.i

3 REPLIES 3
naveen20jan
Obsidian | Level 7

Hi ,

You can try the below approch ;

data want  ;

set have  ;

if notdigit(acct) = 0 and lenght(acct)  = 6 and  100000 =<acct >=999999 then  derived = acct ;

run;

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Just to note, you don't actually need to check the length there:

if notdigit(acct) = 0 and 100000 =<acct >=999999 then  derived = acct ;

As anything not between the given upper and lower includes those with a length ne 6.

Ksharp
Super User

data have;

input acct $;

cards;

1

100

1000A

201000  

210000A

312456 

A400010

;

run;

data want ;

set have;

length derived $ 10;

if 100000<=input(acct,?? best32.)<=999999 then derived=acct;

run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 976 views
  • 0 likes
  • 4 in conversation