You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PROC IMPORT导入Excel时如何去除变量名首尾空格与下划线?

解决方案

方法一:导入后批量清理变量名

先正常执行PROC IMPORT完成导入,再用PROC DATASETS批量处理变量名——把首尾的下划线去掉,保留中间空格转来的下划线:

/* 你的原始PROC IMPORT代码 */
PROC IMPORT OUT= work.raw_data
            DATAFILE= "C:\你的文件路径.xlsx"
            DBMS=EXCELCS REPLACE;
            SHEET="Sheet1";
            GETNAMES=YES;
            validvarname=v7;
RUN;

/* 批量清理变量名 */
PROC DATASETS LIB=WORK NOLIST;
    MODIFY raw_data;
    RENAME 
        %LET i=1;
        %DO %UNTIL (%SCAN(&_ALL_,&i)=);
            %LET old_var=%SCAN(&_ALL_,&i);
            /* 先把下划线转空格,去首尾空格,再把中间空格转回下划线 */
            %LET new_var=%SYSFUNC(TRANSLATE(%SYSFUNC(STRIP(%SYSFUNC(TRANSLATE(&old_var,' ','_')))),'_',' '));
            &old_var = &new_var
            %LET i=%EVAL(&i+1);
        %END;
    ;
RUN;
QUIT;

方法二:提前获取并清理变量名,手动指定导入

先通过LIBNAME连接Excel拿到原始变量名,清理后再导入时手动指定变量名,跳过PROC IMPORT自动生成的带首尾下划线的名字:

/* 连接Excel库 */
LIBNAME xls_lib EXCELCS "C:\你的文件路径.xlsx" GETNAMES=YES;

/* 从字典表提取变量名并清理 */
PROC SQL NOPRINT;
    SELECT 
        name AS old_name,
        TRANSLATE(STRIP(TRANSLATE(name,' ','_')), '_', ' ') AS new_name
    INTO :old_vars SEPARATED BY ' ', :new_vars SEPARATED BY ' '
    FROM DICTIONARY.COLUMNS
    WHERE libname='XLS_LIB' AND memname='SHEET1'; /* SHEET1替换成你的工作表名,注意大写 */
QUIT;

LIBNAME xls_lib CLEAR;

/* 导入时手动指定变量名 */
PROC IMPORT OUT= work.clean_data
            DATAFILE= "C:\你的文件路径.xlsx"
            DBMS=EXCELCS REPLACE;
            SHEET="Sheet1";
            GETNAMES=NO; /* 不读取Excel的表头,改用手动重命名 */
            RENAME 
                %LET i=1;
                %DO %UNTIL (%SCAN(&old_vars,&i)=);
                    VAR&i = %SCAN(&new_vars,&i)
                    %LET i=%EVAL(&i+1);
                %END;
            ;
RUN;

方法三:直接修改Excel源文件(最简便)

如果有权限编辑Excel,直接选中表头单元格,用TRIM函数或者手动删除变量名的前后空格,之后再用PROC IMPORT导入,就能直接得到A_and_B格式的变量名。

内容的提问来源于stack exchange,提问作者Carabas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:16:12