SAS Visual Analytics按产品分组实现双月客户数可视化求助
在SAS Visual Analytics中实现跨年度同月产品客户数对比条形图
核心问题分析
当前数据集为宽表结构(每个产品对应一列),这种结构无法直接支持SAS VA按产品分组、跨年份对比的需求。必须先将数据转换为长表结构,再完成聚合计算,才能实现目标可视化。
1. 数据格式转换(宽表转长表)
使用SAS代码将宽表转换为长表,把每个产品列拆分为单独的行记录:
/* 转换宽表为长表:每个客户-月份下的产品转为单行 */ proc transpose data=your_original_dataset out=product_long_data(rename=(col1=has_product _name_=product_name)) ; by month customer_id; var product1 product2 product3 ... productn; /* 替换为实际所有产品列名 */ run;
转换后的长表结构示例:
| month | customer_id | product_name | has_product |
|---|---|---|---|
| 01MAR2023 | 1001 | product1 | 1 |
| 01MAR2023 | 1001 | product2 | 0 |
| 01MAR2022 | 1002 | product1 | 1 |
2. 聚合计算目标数据
筛选需要对比的月份(如2022年3月、2023年3月),并计算每个产品在对应月份的去重客户数:
/* 生成SAS VA可用的聚合数据集 */ proc sql; create table va_analysis_data as select product_name, year(month) as year, put(month, yymmd7.) as year_month format=yymmd7., count(distinct customer_id) as customer_count from product_long_data where has_product = 1 and month in ('01MAR2022'd, '01MAR2023'd) /* 替换为你需要对比的月份 */ group by product_name, year, year_month; quit;
3. SAS Visual Analytics可视化配置
导入va_analysis_data后,按以下步骤创建条形图:
- 拖放
product_name到Y轴(作为分组维度) - 拖放
customer_count到X轴(作为度量) - 拖放
year(或year_month)到颜色/分组区域,实现同一产品下两年数据的条形对比 - 可选:调整条形排列方式为分组条形(而非堆叠),确保对比更直观
关键说明
- 原宽表结构会导致VA默认按日期维度分组,嵌套产品字段,无法满足需求;长表结构让产品成为一级维度,年份作为对比维度
- 必须使用
count(distinct customer_id)确保统计的是独立客户数,避免同一客户多次计数
内容的提问来源于stack exchange,提问作者bestsmile
相关产品推荐
相关产品推荐

