'How to use SAS to split a string into two variables
I have a dataset as below:
country United States, Seattle United Kingdom, London
How can I split country into a data in SAS like:
country city
United States Seattle
United Kingdom London
Solution 1:[1]
Use function SCAN() with comma as separator.
data test;
set test;
city=scan(country,2,',');
country=scan(country,1,',');
run;
Solution 2:[2]
Another option, INFILE magic
(google the term for papers on the topic); useful for parsing many variables from one string and/or dealing with quoted fields and such that would be more work with scan
.
filename tempfile "c:\temp\test.txt";
data have;
input @1 country $50.;
datalines;
United States, Seattle
United Kingdom, London
;;;;
run;
data want;
set have;
infile tempfile dlm=',' dsd;
input @1 @@;
_infile_=country;
format newcountry city $50.;
input newcountry $ city $ @@;
run;
tempfile
can be any file (or one you create on the fly with any character in it to avoid premature EOF).
Solution 3:[3]
Response to:
data test;
set test;
city=scan(country,2,',');
country=scan(country,1,',');
run;
What if I want to split the last comma in the string only, keeping 7410 City?
Example: "Junior 18, Plays Piano, 7410 City
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Dmitry Shopin |
Solution 2 | Joe |
Solution 3 | ade8su |