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

 

Hello, 

 

I've been trying to read this dataset into SAS Studio (Release: 3.71 - Basic Edition). As shown below, everything is in double quotes:  

 

"log.radon" "floor" "uranium" "county" "county.name"
"1" "0.78845736036427" "1" "-0.6890475953545" "1" "AITKIN "
"2" "0.78845736036427" "0" "-0.6890475953545" "1" "AITKIN "
"3" "1.06471073699243" "0" "-0.6890475953545" "1" "AITKIN "

(more lines of data here)

"917" "1.6094379124341" "0" "-0.0900242748478867" "84" "WRIGHT "
"918" "1.30833281965018" "0" "0.355286981163884" "85" "YELLOW MEDICINE "
"919" "1.06471073699243" "0" "0.355286981163884" "85" "YELLOW MEDICINE "

 

 

 

data temp;
length ID Radon Floor Uranium County countyname $ 40;
infile "&path/radon.MN.txt" dlm='" "' firstobs=2;
input ID Radon Floor Uranium County countyname$;
run;

All of my numeric variables read in perfectly, but my one character variable will read in only the first word. 

For example, obs 919's county.name is "YELLOW MEDICINE" but I the output just says YELLOW.  

 

 

SAS help.JPG

 

Because SAS stops after it reaches the first space between words and moves the next word to a new variable, I am guessing it's a problem with how I'm setting up dlm.  How can I prevent this miscommunication with SAS so that it reads in everything between double quotes and not just the first word?

 
Note: I've tried dsd but the error message seems to say that won't work with this file.  
"ERROR: Quotes (' or ") have been detected in the delimiter (DLM=)
string. Quotes cannot be used as delimiter characters when the
DSD option is also specified."

 

Also, I apologize for anything in this post that I've formatted poorly or vaguely. I appreciate any formatting feedback, too.  

 

Thank you for any thoughts or suggestions. 

Nicole

1 ACCEPTED SOLUTION

Accepted Solutions
2 REPLIES 2
Kurt_Bremser
Super User

Try this:

data temp;
 length ID Radon Floor Uranium County countyname $ 40;
 infile "&path/radon.MN.txt" dlm=' ' dsd firstobs=2; 
 input ID Radon Floor Uranium County countyname$;
run;
Kurt_Bremser
Super User

And here a more specific version, with my ideas for variable types/lengths:

data want;
infile cards dlm=' ' dsd firstobs=2;
length
  ID $3
  Radon 8
  Floor 3
  Uranium 8
  County $2
  countyname $ 40
;
input ID Radon Floor Uranium County countyname;
cards;
"log.radon" "floor" "uranium" "county" "county.name"
"1" "0.78845736036427" "1" "-0.6890475953545" "1" "AITKIN "
"2" "0.78845736036427" "0" "-0.6890475953545" "1" "AITKIN "
"3" "1.06471073699243" "0" "-0.6890475953545" "1" "AITKIN "
"917" "1.6094379124341" "0" "-0.0900242748478867" "84" "WRIGHT "
"918" "1.30833281965018" "0" "0.355286981163884" "85" "YELLOW MEDICINE "
"919" "1.06471073699243" "0" "0.355286981163884" "85" "YELLOW MEDICINE "
;
run;

Note that your initial code would read all variables as $40.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

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.

SAS Training: Just a Click Away

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

Browse our catalog!

Discussion stats
  • 2 replies
  • 4491 views
  • 1 like
  • 2 in conversation