加载中…
个人资料
谷子歌的2018
谷子歌的2018
  • 博客等级:
  • 博客积分:0
  • 博客访问:121,448
  • 关注人气:199
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

SAS 变量名可以用中文吗?

(2013-07-25 22:23:54)
标签:

杂谈

分类: Data_Coding
        
      SAS <wbr>变量名可以用中文吗?

也许你会诧异,为什么要问这个问题。SAS要编程,要编程就要用英文,英文编程变量当然是英文了。但是当我们拿到一堆别人给我们的Access数据文件、EXCEL数据文件,或者是EpiData 数据文件,打开一看,发现里面几百个变量全部都是中文时(不要说这种情况你没遇到过,或者你坚信你不会遇到),我们会怎么想:改成英文变量名?如果有那份毅力和决心,花几个小时全部逐一改的话,那确实令人佩服。不过,我们大多数人肯定会想:SAS 支持中文变量名吗?能的话我就可以直接导入了事了。

    于是你用infile语句,用proc import过程等开始倒腾,很可惜,SAS全都报错。可能你会就此止步,叹息道:“看来SAS确实不能支持中文”。SAS不能支持中文变量名吗?答案当然是能的。不过我们需要稍做一些设置,扩展一下SAS默认的命名规则。 方法是:

options validvarname=any;

或许很多SAS USER都已知道。不过我们还是可以稍微扩展下。

    实际上,SAS的命名规则有三个版本。V7,UPCASEANYSAS默认的是V7

其规则是:

·           最长32字符

·           首字符可以拉丁字母和下划线,后继的字符可是字母和下划线,还有数字符号

·           末尾空格忽略,且左对齐

·           中间不能包含空格和特殊字符(下划线除外)

·           字符大小写均可,不作区分

·           不能为SAS自动变量,如_N__ERROR_

    可见,默认的SAS命名系统V7不并支持中文、也不支持变量名中有空格。要想打破这种限制,我们就可以将validvarname设置为any,这样就可以满足我们的要求了。为什么any就支持了?我们可以深入的查看一下,any 所支持的具体内容:

·           可以包含或以任何字符开头。包括空格、国家标标字符(national characters)、特殊字符以及多字节字符。

·           最长32位字符

·           不可包含空字节

·           保留开头的空格,舍弃末尾的空格

·           至少包含一个字符,不能全部为空。

·           字符大小写均可,不作区分

由此可见,指定为ANY后,我们不仅可以支持中文,还可以支持其它国家的文字。不过,需要小心的是,如果变量名不符合V7的规则,我们还需要名称文字(name literal)的形式命名。即用引号引起来,并在末尾加字符n, n大小写闺均可。如图片中的25个变量即是这种情况。但是如果只是汉字字符,好像可以不用名称文字形式。

至于upcase,我想,你肯定也经望文知意了。 

附录:产生图片中的数据集的代码

options validvarname=any; 

data  webgu;

      SAS中文变量名="YES";

      SAS中文變量名="YES";

      '2SAS中文变量名'n="YES";

      '2SAS中文變量名'n="YES";

      'SAS 格变量名'n="YES"

      'SAS @ %格特殊字符变量名'n="YES"

 

run;


此外, Options  validmemname=extend; 可以拓展数据集的命名规则。 试试吧?

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有