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

如何用PROC TRANSPOSE将CDC人口数据的种族族裔长表转宽表?

使用PROC TRANSPOSE实现CDC人口数据长转宽

完全可以用PROC TRANSPOSE实现这个长格式到宽格式的转换,核心是先把Race和Eth合并成目标列名格式的变量,再进行转置操作,具体步骤如下:

步骤1:合并种族族裔变量

先通过DATA步把Race和Eth两个字段合并成一个新变量,用来作为转置后的列名:

data cdc_pop_long;
    set your_input_dataset; /* 替换成你的原始数据集名称 */
    Race_Eth = catx('/', Race, Eth); /* 用斜杠合并两个变量,自动去除前后空格 */
run;

这里catx函数会自动处理Eth字段可能存在的多余空格(比如示例里的AI/AN H),生成符合要求的AI/AN/H格式的列名变量。

步骤2:使用PROC TRANSPOSE转置

指定State和Year作为分组的BY变量,合并后的Race_Eth作为ID变量(控制新列名),Pop作为要转置的数值变量:

proc transpose data=cdc_pop_long out=cdc_pop_wide(drop=_name_);
    by State Year; /* 按州和年份分组,每组转成一行 */
    id Race_Eth; /* 用合并后的变量作为新列名 */
    var Pop; /* 要转置的人口数据列 */
run;
  • drop=_name_是去掉转置过程中自动生成的_NAME_列(该列默认值为Pop,无实际意义)
  • 转置后的输出数据集cdc_pop_wide就会呈现你需要的宽格式:每行对应一个州+年份的组合,各种族族裔的人口数作为单独列。

结果示例

转置后的数据集结构会和你给出的目标格式完全一致:

State    Year White/NH Black/NH Asian/NH AI/AN/H
Alabama  2010  xxxx      xxxx    xxxx     xxxx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:42:38