首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当变量名中有特殊字符时,如何将人口普查表导入SAS?

当变量名中有特殊字符时,如何将人口普查表导入SAS?
EN

Stack Overflow用户
提问于 2017-02-09 03:40:37
回答 2查看 521关注 0票数 1

我正在使用SAS企业指南,将美国社区调查表格从人口普查导入到脚本中以使用它们。以下是我正在导入SAS企业指南的原始人口普查csv的示例:

在我的数据步骤中,当我使用以下命令时

代码语言:javascript
复制
County=Geo.display-label;

我得到了这个错误:

在base SAS中,我使用的是

代码语言:javascript
复制
County=Geo_display_label;

虽然这在基本SAS中有效,但当我在企业指南中尝试时,我得到了以下错误:

让原始数据的变量名Geo.display-label正确读入SAS Enterprise Guide的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-02-09 05:56:29

要查看VALIDVARNAME选项对当列标题不是有效的SAS名称时PROC IMPORT生成的名称的影响,让我们创建一个测试CSV文件。

代码语言:javascript
复制
filename csv temp ;

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

如果在VALIDVARNAME选项设置为ANY时运行PROC IMPORT将其转换为SAS数据集,则它将准确使用列标题,包括句点和连字符等非法字符。要引用包含这些非法字符的变量,我们需要使用名称字面量。

代码语言:javascript
复制
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;

但是如果我们将该选项设置为V7,那么它会将非法字符转换为下划线。

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2017-02-09 04:27:21

代码语言:javascript
复制
County = 'geo.display-label'n;

如果在EG中设置选项VALIDVARNAME=V7;,您将获得与批处理sas相同的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42122185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档