【问题标题】:sas7bdat with spaces in var namessas7bdat 在 var 名称中带有空格
【发布时间】:2013-08-17 23:29:36
【问题描述】:

我收到了几个扩展名为 .sas7bdat 的 SAS 数据集文件。我在 Windows 上使用 SAS 9.3,这些文件的创建者显然使用了不同的环境和/或软件。许多文件的 var 名称包含空格和其他无效字符。即使运行 proc contents 也会引发如下错误:

ERROR: The value Person ID is not a valid SAS name.

奇怪的是,SAS Enterprise Guide 毫无问题地打开并显示了文件。

如何有效地重命名所有错误的 var 名称,以便我可以开始使用这些文件运行实际程序?

【问题讨论】:

    标签: sas


    【解决方案1】:

    除了option validvarname=ANY;,您还需要引用变量名称作为名称文字:'Person ID'n(单引号或双引号都可以)。

    如果你想有效地重命名它们,你可以这样做:

    options validvarname=any;
    data have;
    'Hello Var'n = 1;
    'Another Var'n = 2;
    x=3;
    run;
    
    data badvarnames;
    set sashelp.vcolumn;
    where libname='WORK' and memname='HAVE' and not nvalid(name,'v7');
    validname = translate(trim(name),'_',' ');
    name = cats("'",name,"'n");
    run;
    
    proc sql;
    select catx(' ','rename',name,'=',validname,';') into :renamelist
    separated by ' ' from badvarnames;
    quit;
    
    proc datasets lib=work;
    modify have;
    &renamelist;
    quit;
    
    proc contents data=have;
    run;
    

    根据其他细节(例如这可能会创建重叠的变量名称),您可能需要针对这些问题调整代码。

    【讨论】:

    • 这真是太好了。在没有 %your %whole %program %looking %like %this 的情况下,你会完成很多“宏观”级别的工作。
    【解决方案2】:

    我不认为这是一个不同的 OS/SAS 版本。我认为您可能需要提交以下内容

    options validvarname = ANY;
    

    【讨论】:

    • 感谢您的快速回复!
    猜你喜欢
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多