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

如何通过SAS生成含Var、Type、Miss_val、Dis_val的规整数据表?

SAS生成指定格式变量统计表格解决方案

需求说明

需要生成仅包含Var、Type、Miss_val、Dis_val四列的规整数据表,示例输出如下:

VarTypeMiss_valDis_val
MakeCharacter038

尝试过的无效代码

%macro task_Oct(set,col_name);

proc sql; 

    select nmiss(&col_name) as Miss_val, count(distinct &col_name) as Dis_val

    from &set;

quit;

proc contents

data=&set (keep=&col_name);

run;

%mend task_Oct;

%task_Oct(sashelp.cars,Make)

修正后的实现代码

%macro task_Oct(set, col_name);
    /* 提取变量类型信息并转换为文字描述 */
    proc contents data=&set (keep=&col_name) out=var_info(keep=name type) noprint;
    run;
    data var_info;
        set var_info;
        Var = upcase("&col_name");
        Type = ifc(type=2, 'Character', 'Numeric');
        drop name type;
    run;

    /* 计算缺失值与唯一值数量,存入宏变量 */
    proc sql noprint;
        select nmiss(&col_name) as Miss_val, count(distinct &col_name) as Dis_val
        into :miss_val, :dis_val
        from &set;
    quit;

    /* 合并信息生成目标数据集 */
    data target_table;
        set var_info;
        Miss_val = &miss_val;
        Dis_val = &dis_val;
        format Miss_val Dis_val 8.;
    run;

    /* 打印规整格式的结果 */
    proc print data=target_table noobs label;
        label Var='Var' Type='Type' Miss_val='Miss_val' Dis_val='Dis_val';
    run;
%mend task_Oct;

/* 调用宏生成结果 */
%task_Oct(sashelp.cars, Make)

代码说明

  • 通过proc contents获取变量的类型代码,用ifc函数将代码转换为Character或Numeric的文字描述
  • 用proc sql计算指定变量的缺失值数量(nmiss)和唯一值数量(count(distinct)),并将结果存入宏变量
  • 合并类型信息与统计值,生成包含目标四列的数据集
  • 最后用proc print输出无序号、带列标签的规整表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:05:26