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

如何用SAS Proc freq生成带转场色彩标识的POINTS分值双向对比表

实现方案

前置数据预处理

先为原始数据集新增转场标识字段,用于后续分组和颜色映射:

data my_table_pre;
    set my_table;
    transition = catx('->', Table1, Table2);
run;

方案1:PROC FREQ 分层输出带转场区分的交叉表

通过增加层变量的方式,将两类转场的交叉表分开输出,结构和你原有使用习惯一致:

Proc freq data=my_table_pre;
    /* 第一层为转场类型,自动分开展示两类转场的POINTS1*POINTS2频数统计 */
    Tables transition*points1*points2 / norow nocol nocum nofreq nopercent;
Run;

如果需要在同一张表中区分颜色,需要搭配ODS模板自定义样式,操作复杂度更高,更推荐用PROC TABULATE实现。


方案2:PROC TABULATE 单表实现交叉统计+转场颜色区分

PROC TABULATE支持自定义单元格样式,可直接按转场类型配置不同背景色,输出合并的单张交叉表:

  1. 先定义转场类型和颜色的映射格式:
proc format;
    value $trans_color
        'A->B' = 'lightblue'
        'A->C' = 'lightgreen'
    ;
run;
  1. 执行制表过程:
proc tabulate data=my_table_pre style=[background=$trans_color.] noseps;
    class points1 points2 transition;
    /* 行维度为POINTS1,列维度为POINTS2+转场类型,可自定义展示频数/对应ID等信息 */
    table points1 label='POINTS1',
          points2 label='POINTS2' * transition label='转场类型' * n label=' '
          / misstext=' ' box='POINTS1\POINTS2';
run;

输出的表格会自动给不同转场的单元格填充对应背景色,两类转场的统计结果直接在同一张表中展示。


方案3:散点图可视化(更适合分值变化对比)

如果你的核心需求是直观对比两个分值的关联关系,散点图比表格展示效果更好:

proc sgplot data=my_table_pre;
    scatter x=POINTS1 y=POINTS2 / group=transition datalabel=ID 
        markerattrs=(size=12) datalabelattrs=(weight=bold);
    xaxis label='Table1分值(POINTS1)' grid values=(8 to 12 by 1);
    yaxis label='Table2分值(POINTS2)' grid values=(8 to 11 by 1);
    keylegend / title='转场类型' location=inside position=topright;
run;

运行后会自动为两类转场的点分配不同颜色,每个点还会标注对应ID,分值变化趋势一目了然。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:24:03