gpt4 book ai didi

SAS PROC TABULATE 具有缺失值的多个类变量的百分比

转载 作者:行者123 更新时间:2023-12-01 19:30:33 24 4
gpt4 key购买 nike

我想创建一个包含三个变量的表,其中 var2 是 var1 的百分比,var3 是 var 2 的百分比,按具有缺失值的类变量进行分割。

为了解释一下,假设我有数据显示谁申请了、谁接受了面试、谁被聘用了某项工作,例如

data job; 
input applied interviewed hired;
datalines;
1 1 1
1 1 1
1 1 1
1 1 0
1 1 0
1 1 0
1 0 .
1 0 .
1 0 .
1 0 .
;
run;

很容易创建一个表格来显示申请者的数量,然后是接受面试的人的百分比,然后是这些人中被雇用的百分比。

proc tabulate data = job; 
var applied interviewed hired;
tables applied * n (interviewed hired) * mean * f=percent6.;
run;

给出:

applied interviewed hired 
10 60% 50%

现在我想将其分解为几个缺少值的类变量。

data have; 
input sex degree exp applied interviewed hired;
datalines;
0 1 1 1 1 1
1 . 0 1 1 1
. 0 1 1 1 1
0 1 0 1 1 0
1 0 1 1 1 0
0 1 0 1 1 0
1 . 1 1 0 .
0 1 . 1 0 .
. 0 0 1 0 .
1 0 0 1 0 .
;
run;

如果我一次执行一个类变量,它将给出正确的百分比:

proc tabulate data = have format = 6.; 
class sex;
var applied interviewed hired;
tables sex, applied * sum (interviewed hired) * mean * f=percent6.;
run;

有没有一种方法可以同时处理表中的所有三个类变量,并获得每个类别的正确百分比。所以表格看起来像:

       applied  interviewed  hired
sex
0 4 75% 33%
1 4 50% 50%
degree
0 4 50% 50%
1 4 75% 33%
exp
0 5 60% 33%
1 4 75% 67%

这是我必须做很多很多次的事情,我需要用数字填充报告中的表格,所以我正在寻找一种可以一步打印表格的解决方案。

你会如何解决这个问题?

最佳答案

您遇到的问题是丢失数据。当任何类变量缺少一个case时,它就会从整个表中删除,除非您在proc调用中指定MISSING。因此,例如,您的第 4 性别=0 没有面试的人缺少 EXP;所以它们根本没有出现在表格中,尽管您希望它们出现在 SEX 中。

您可以获得正确的数字,主要是:

proc tabulate data = have format = 6. missing; 
class sex degree exp;
var applied interviewed hired;
tables (sex degree exp), applied * sum (interviewed hired) * mean * f=percent6.;
run;

但是,您有一个额外的行,其中包含丢失数据的行。您无法从打印输出中消除这些行,同时也将它们包含在其他类计算中;这只是 SAS 制表的局限性之一。其他PROC也有类似的问题;如果您生成了多个表,PROC FREQ 是唯一不执行此操作的方法,但即使在一个表(与星号组合)中,您也会遇到相同的问题。

我发现解决这个问题的唯一方法是将表输出到数据集,然后过滤掉这些行,然后通过 PROC REPORT 或 PRINT 或 TABULATE 将数据返回。

关于SAS PROC TABULATE 具有缺失值的多个类变量的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34299701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com