rachel.passer
rachel.passer

Reputation: 121

How do I import a census table into SAS when the variable name has special characters in it?

I am using SAS Enterprise Guide, importing American Community Survey tables from the census into a script to work with them. Here is an example of a raw census csv I'm importing into SAS Enterprise Guide:

enter image description here

within my data step, when I use the command

County=Geo.display-label;

I get this error:

enter image description here

In base SAS, I was using

County=Geo_display_label;

While that worked in base SAS, when I tried that in Enterprise Guide, I got this error: enter image description here

What is a way to get the raw data's variable name Geo.display-label to read into SAS Enterprise Guide correctly?

Upvotes: 1

Views: 902

Answers (2)

Tom
Tom

Reputation: 51581

To see the impact of the VALIDVARNAME option on the names that PROC IMPORT generates when the column headers are not valid SAS names lets make a little test CSV file.

filename csv temp ;

data _null_;
 file csv ;
 put 'GEO.id,GEO.id2,GEO.display-label';
 put 'id1,id2,geography';
run;

If we run PROC IMPORT to convert that into a SAS datasets when VALIDVARNAME option is set to ANY then it will use the column headers exactly, including the illegal characters like period and hyphen. To reference the variables with those illegal characters we will need to use name literals.

options validvarname=any;
proc import datafile=csv replace out=test1 dbms=dlm;
  delimiter=',';
run;
proc contents data=test1; run;
proc freq data=test1;
  tables 'GEO.display-label'n ;
run;

But if we set the option to V7 instead then it will convert the illegal characters into underscores.

options validvarname=v7;
proc import datafile=csv replace out=test2 dbms=dlm;
  delimiter=',';
run;

proc contents data=test2; run;
proc freq data=test2;
  tables geo_display_label ;
run;

Upvotes: 2

data _null_
data _null_

Reputation: 9109

County = 'geo.display-label'n;

if you set OPTIONS VALIDVARNAME=V7; in EG you will get the same names as batch sas.

Upvotes: 1

Related Questions