【问题标题】:computing a percentage in SAS using proc means使用 proc 方法计算 SAS 中的百分比
【发布时间】:2013-09-21 00:15:34
【问题描述】:

我在 SAS 中有一些需要处理的数据,但我遇到了麻烦。我的专栏是

id#、年龄和男性

1 20 牛顿

2 20 年

3 21 岁

4 23 N

5 21 岁

6 21 N

7 20 牛顿

8 21 岁

9 23 岁

有没有办法获得男性与年龄的百分比?也就是说,年龄是列,对于每一列,我想知道男性的百分比?我希望能够使用 proc 方法而不是 proc tabulate 来找到它。谢谢。

【问题讨论】:

  • 你为什么说你不想用PROC TABULATE,这是按照你的要求做的程序?这就像在说“请告诉我如何用叉子来吃这个鸡汤。我想用叉子而不是勺子。谢谢。”

标签: sas


【解决方案1】:

除 1/0 字段的特殊情况外,这不是 PROC MEANS 所做的。您可以将 Y 和 N 转换为 1 和 0 并取该新字段的平均值,这相当于男性的百分比;但是,在数据不变的情况下,PROC MEANS 无法为您提供每个类别的百分比。这就是PROC FREQPROC TABULATE 所做的。

【讨论】:

    【解决方案2】:
    data input;
    input id age male $;
    cards;
    1 20 N
    2 20 Y
    3 21 Y
    4 23 N
    5 21 Y
    6 21 N
    7 20 N
    8 21 Y
    9 23 Y
    ;
    run;
    
    ods trace on;
    ods output CrossTabFreqs=work.stats;
    proc freq data=input;
    tables age*male;
    run;
    

    你的结果:

    options nolabel;
    proc sql;
    select age, RowPercent as MalePercent, 100 - RowPercent as WomanPercent
    from work.stats
    where _type_='11' and male='Y';
    quit;
    

    '11' 是二元的“年龄和男性变量都促成了这一总结观察”。

    在这样的问题中,最好说明您是只想“查看”结果还是要将其存储在表中(也许这就是 PROC TABULATE 被拒绝的原因?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      相关资源
      最近更新 更多