Help using Base SAS procedures

Retrieve Value from a string

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 15
Accepted Solution

Retrieve Value from a string


Hi all,

I need help with the following:

I have a 2 variables in a dataset

n= number

label = string e.g. X!3.479!3.49902!3.43968!3.49919!3.5432!3.69513!3.52109!3.53714!

What I need to do is - retrieve the 'n' th value (seperated by "!").

For example:

n= 2

value= 3.49902

Im guessing I need to use a scan?

Many thanks


Accepted Solutions
Solution
‎02-10-2014 09:36 AM
Super User
Posts: 5,509

Re: Retrieve Value from a string

jammy,

Yes, you'll need SCAN.  However, SCAN alone will create VALUE as a character variable:

value = scan(string, n, '!');

If you want VALUE as a numeric variable, you'll have to apply the INPUT function to the result returned by the SCAN function:

value = input( scan(string, n, '!'), 8.);

It won't hurt to use a length of 8 in the INPUT function when the incoming string contains fewer than 8 characters.  Good luck.

View solution in original post


All Replies
Super User
Posts: 5,430

Re: Retrieve Value from a string

Yes

Data never sleeps
Occasional Contributor
Posts: 15

Re: Retrieve Value from a string


My bad..... I was trying to make it more complicated than it is!

Cheers

Solution
‎02-10-2014 09:36 AM
Super User
Posts: 5,509

Re: Retrieve Value from a string

jammy,

Yes, you'll need SCAN.  However, SCAN alone will create VALUE as a character variable:

value = scan(string, n, '!');

If you want VALUE as a numeric variable, you'll have to apply the INPUT function to the result returned by the SCAN function:

value = input( scan(string, n, '!'), 8.);

It won't hurt to use a length of 8 in the INPUT function when the incoming string contains fewer than 8 characters.  Good luck.

Trusted Advisor
Posts: 1,137

Re: Retrieve Value from a string

Also if you want to know the different nth values, try the below code

data have;

    string="X!3.479!3.49902!3.43968!3.49919!3.5432!3.69513!3.52109!3.53714!";

do i = 1 to 10;

    new=scan(string,i,'!');

    output;

end;

run;

Thanks,

Jag

Thanks,
Jag
🔒 This topic is solved and locked.

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

Discussion stats
  • 4 replies
  • 170 views
  • 0 likes
  • 4 in conversation