BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Pyrite | Level 9

## how to extract part of a string

Hello,

How do i extract the value in the "( )" and convert into numeric? I only want numbers, not "NA".

data:

var1 (character)

 3 ( na   ) 81 (41.1%) 3 (1.5%)

want:

var2 (numeric)

 . 41.1 1.5
1 ACCEPTED SOLUTION

Accepted Solutions
Super User

## Re: how to extract part of a string

Untested because example data not provided in form of working data step code.

```data want;
set have;
var2 = input(scan(var1,2,'()'),?? comma12.);
format var2 percent8.1;
run;```

The '()' in the SCAN function is telling the function to only consider ( and ) when separating out values. So it is easier to tell exactly where/end the desired second value occurs.

If you want to change the actual value from 41.1% then you need to add a multiply by 100. I left the value alone and provided a format that will display the digits in the expected range. The ?? preceding the informat comma12 is to suppress the invalid data messages when attempting to convert "na" into a numeric value.

@HitmonTran wrote:

Hello,

How do i extract the value in the "( )" and convert into numeric? I only want numbers, not "NA".

data:

var1 (character)

 3 ( na   ) 81 (41.1%) 3 (1.5%)

want:

var2 (numeric)

 . 41.1 1.5

1 REPLY 1
Super User

## Re: how to extract part of a string

Untested because example data not provided in form of working data step code.

```data want;
set have;
var2 = input(scan(var1,2,'()'),?? comma12.);
format var2 percent8.1;
run;```

The '()' in the SCAN function is telling the function to only consider ( and ) when separating out values. So it is easier to tell exactly where/end the desired second value occurs.

If you want to change the actual value from 41.1% then you need to add a multiply by 100. I left the value alone and provided a format that will display the digits in the expected range. The ?? preceding the informat comma12 is to suppress the invalid data messages when attempting to convert "na" into a numeric value.

@HitmonTran wrote:

Hello,

How do i extract the value in the "( )" and convert into numeric? I only want numbers, not "NA".

data:

var1 (character)

 3 ( na   ) 81 (41.1%) 3 (1.5%)

want:

var2 (numeric)

 . 41.1 1.5

Discussion stats
• 1 reply
• 64 views
• 0 likes
• 2 in conversation