Proc 制表 rowpctn 单独列百分比

问题描述 投票:0回答:2

我是 SAS 新手,尝试更多地了解 Proc Tabulate。

proc tabulate data=stem_camp1;
class gender pass SUBJECT;
table GENDER, SUBJECT*PASS*(n="count" rowpctn="%");
run;

我有一个像上面这样的代码。

enter image description here SAS 正在计算 BIOS 和数学的百分比,所以当我将 4% 相加时,它得到 100%

但我希望 SAS 分别计算 BIOS 和 MATH 的百分比。

例如这样

       BIOS                 MATH
MALE - - 10 100%      10 50%  10 50%  
sas
2个回答
4
投票

来自帮助(我的粗体):

使用 PCTN 和 PCTSUM

PCTN 和 PCTSUM 统计数据可用于计算这些相同的百分比。它们使您能够手动定义分母。 PCTN 和 PCTSUM 统计数据打印单个表格单元格中的值相对于另一个表格单元格中的值(用于计算百分比的分母)或一组单元格中的值总和的百分比。默认情况下,PROC TABULATE 汇总所有 N 单元格(对于 PCTN)或所有 SUM 单元格(对于 PCTSUM)中的值,并使用汇总值作为分母。您可以通过分母定义控制 PROC TABULATE 用于分母的值。

您将分母定义放在 PCTN 或 PCTSUM 统计数据旁边的 尖括号 (< and >) 中。分母定义指定要为分母求和的类别。

所以你会想要

PCTN<PASS>
而不是
ROWPCTN

这是使用数据集的示例

sashelp.cars

proc tabulate data=sashelp.cars;
  class type origin drivetrain;
  table type, origin*drivetrain*(n pctn<drivetrain>);
run;

enter image description here

需要明确的是,

ALL
传动系统意味着全轮驱动,而不是通用类变量ALL


0
投票
这是绝妙的解决方案!谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.