使用 SAS 和 PROC TABULATE,如何显示值的一个子集而不是所有子集的百分比?

发布于 2024-08-13 04:45:25 字数 367 浏览 7 评论 0原文

例如,如果我有成绩(A、B、C、D、E、F),并且想要显示所有孩子中获得 A 或 B 的孩子的百分比和 N,并且只有该信息,是否可以与过程表?

我尝试使用多标签格式,但对于这些格式,我必须在格式中包含所有其他值,否则它们只会显示在 PROC TABULATE 结果中。我正在寻找类似的东西:

Kid Group----------Total N----------A or B N----------A or B %  
Group 1            100              25                25%
Group 2            100              10                10%

If I have, say, grades (A,B,C,D,E,F), and want to display the percentage and N of kids who got an A or B out of all kids, and ONLY that info, is it possible with PROC TABULATE?

I tried using multi-label formats, but with those I have to include all the other values in the format or they just show up in the PROC TABULATE results. I'm looking for something like:

Kid Group----------Total N----------A or B N----------A or B %  
Group 1            100              25                25%
Group 2            100              10                10%

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海拔太高太耀眼 2024-08-20 04:45:25

想不出任何方法可以立即用表格来做到这一点。手动完成可能是最简单的。

data grades;
input name $ 1-15  gender $ 16-16 grade 19-20;
datalines;
Anderson       M  75
Aziz           F  67
Bayer          M  77
Burke          F  63
Chung          M  85
Cohen          F  89
Drew           F  49
Dubos          M  41
Elliott        F  85
Hazelton       M  55
Hinton         M  85
Hung           F  98
Jacob          F  64
Janeway        F  51
Judson         F  89
Litowski       M  85
Malloy         M  79
Meyer          F  85
Nichols        M  58
Oliver         F  41
Park           F  77
Patel          M  73
Randleman      F  46
Robinson       M  64
Shien          M  55
Simonson       M  62
Smith N        M  71
Smith R        M  79
Sullivan       M  77
Swift          M  63
Wolfson        F  79
Wong           F  89
Zabriski       M  89
;
run;
proc sort data=grades;by gender;run;
data _null_;
    set grades end=last;
    by gender;
    if _n_=1 then do;
       put @1 "gender" @8 "total" @16 "A_or_B" @27 "pct";
    end;
    if first.gender then do;
         A_or_B=0;
         total=0;
    end;
    total+1;
    if grade ge 80 and grade le 100 then A_or_B+1;
    if last.gender then do;
         pct=A_or_B/total;
         put @1 gender @8 total @16 A_or_B @24 pct nlpct.;
    end;
run;

Can't think of any way to do it with tabulate right off hand. It might be easiest to jut do it manually.

data grades;
input name $ 1-15  gender $ 16-16 grade 19-20;
datalines;
Anderson       M  75
Aziz           F  67
Bayer          M  77
Burke          F  63
Chung          M  85
Cohen          F  89
Drew           F  49
Dubos          M  41
Elliott        F  85
Hazelton       M  55
Hinton         M  85
Hung           F  98
Jacob          F  64
Janeway        F  51
Judson         F  89
Litowski       M  85
Malloy         M  79
Meyer          F  85
Nichols        M  58
Oliver         F  41
Park           F  77
Patel          M  73
Randleman      F  46
Robinson       M  64
Shien          M  55
Simonson       M  62
Smith N        M  71
Smith R        M  79
Sullivan       M  77
Swift          M  63
Wolfson        F  79
Wong           F  89
Zabriski       M  89
;
run;
proc sort data=grades;by gender;run;
data _null_;
    set grades end=last;
    by gender;
    if _n_=1 then do;
       put @1 "gender" @8 "total" @16 "A_or_B" @27 "pct";
    end;
    if first.gender then do;
         A_or_B=0;
         total=0;
    end;
    total+1;
    if grade ge 80 and grade le 100 then A_or_B+1;
    if last.gender then do;
         pct=A_or_B/total;
         put @1 gender @8 total @16 A_or_B @24 pct nlpct.;
    end;
run;
謌踐踏愛綪 2024-08-20 04:45:25

使用 where 语句对 PROC 表格中的原始数据集进行子集化。
例如,成绩在 ('A', 'B') 中

Subset the raw dataset in PROC tabulate with where statement.
e.g. where grade in ('A', 'B')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文