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

如何在SAS中便捷查看各列观测数?实现类似Python pandas info()的效果

在SAS中实现类似Pandas info()的功能

要在SAS中得到类似Pandas info()的输出(包含变量名、非缺失值数量、数据类型等信息),可以用以下几种简便方法:

方法1:使用PROC SQL生成汇总(最简洁高效)

通过查询SAS字典表直接拼接变量信息和非缺失计数,无需额外数据步处理:

/* 替换WORK.MY_DATA为你的数据集名(库名.表名) */
proc sql;
    create table work.final_info as
    select 
        v.varnum as 序号,
        v.name as 变量名,
        (select count(&v.name.) from work.my_data) as 非缺失值数量,
        (select count(*) - count(&v.name.) from work.my_data) as 缺失值数量,
        case v.type 
            when 1 then 'Numeric' 
            when 2 then 'Character' 
        end as 数据类型
    from dictionary.columns v
    where v.libname='WORK' and v.memname='MY_DATA' /* 库名和表名需大写 */
    order by v.varnum;
quit;

/* 输出类似Pandas info()的格式化结果 */
title "数据集信息: work.my_data";
proc print data=work.final_info noobs label;
    label 序号='#' 变量名='Column' 非缺失值数量='Non-Null Count' 缺失值数量='Missing Count' 数据类型='Dtype';
run;

方法2:PROC MEANS + 数据步组合

如果需要更灵活的自定义输出,可结合PROC MEANS统计缺失值和PROC CONTENTS获取变量类型:

proc means data=work.my_data n nmiss noprint;
    output out=work.missing_stats n= nmiss= / autoname;
run;

proc transpose data=work.missing_stats out=work.transposed_stats(rename=(_NAME_=变量名 COL1=非缺失值数量 COL2=缺失值数量));
run;

proc contents data=work.my_data out=work.vars_info(keep=name type) noprint;
run;

data work.final_info;
    merge work.transposed_stats work.vars_info(rename=(name=变量名));
    by 变量名;
    length 数据类型 $10;
    数据类型 = ifc(type=1, 'Numeric', 'Character');
run;

proc print data=work.final_info noobs label;
    label 变量名='Column' 非缺失值数量='Non-Null Count' 缺失值数量='Missing Count' 数据类型='Dtype';
run;

方法3:宏循环快速输出文本格式

若只需在日志窗口快速查看结果,可使用宏遍历所有变量并输出统计信息:

%macro var_info(data=);
    %let dsid=%sysfunc(open(&data.));
    %let total_obs=%sysfunc(attrn(&dsid., nobs));
    %let nvars=%sysfunc(attrn(&dsid., nvars));
    
    title "Dataset Info: &data.";
    data _null_;
        put "观测总数: &total_obs.";
        put "变量总数: &nvars.";
        put;
        put "#  Column          Non-Null Count  Dtype";
        put "--- --------------  --------------  -----";
    run;
    
    %do i=1 %to &nvars.;
        %let var=%sysfunc(varname(&dsid., &i.));
        %let type=%sysfunc(vartype(&dsid., &i.));
        
        proc sql noprint;
            select count(&var.) into :non_null from &data.;
        quit;
        
        data _null_;
            dtype=ifc("&type."='N', 'Numeric', 'Character');
            put &i. +(-1) "   " "&var." +(-16) "  " &non_null. +(-12) "  " dtype;
        run;
    %end;
    
    %let rc=%sysfunc(close(&dsid.));
%mend;

/* 调用宏查看数据集信息 */
%var_info(data=work.my_data);

以上方法均能覆盖所有变量,输出结果与Pandas info()的核心信息对齐,可根据需求选择使用。


内容的提问来源于stack exchange,提问作者Tamás Godányi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:15:41