Sas 类变量在PROC表格中。需要替代所有命令
我有以下两张桌子。一个有两个下注结果,另一个有许多需要添加的“虚拟”下注。我想得到原始样本的平均值,加上虚拟赌注的样本的平均值,然后对列之间的差异进行卡方检验,对行之间的差异进行Kruskal-Wallis检验 我在将数据制成表格以得出这两个类别的平均值时遇到了一个问题Sas 类变量在PROC表格中。需要替代所有命令,sas,Sas,我有以下两张桌子。一个有两个下注结果,另一个有许多需要添加的“虚拟”下注。我想得到原始样本的平均值,加上虚拟赌注的样本的平均值,然后对列之间的差异进行卡方检验,对行之间的差异进行Kruskal-Wallis检验 我在将数据制成表格以得出这两个类别的平均值时遇到了一个问题 data A; input username $ betdate : datetime. stake winnings node $; dateOnly = datepart(betdate) ; fo
data A;
input username $ betdate : datetime. stake winnings node $;
dateOnly = datepart(betdate) ;
format betdate DATETIME.;
format dateOnly ddmmyy8.;
datalines;
player1 12NOV2008:12:04:01 90 -90 X
player1 04NOV2008:09:03:44 100 40 L
player2 07NOV2008:14:03:33 120 -120 W
player1 05NOV2008:09:00:00 50 15 L
player1 05NOV2008:09:05:00 30 5 W
player1 05NOV2008:09:00:05 20 10 L
player2 09NOV2008:10:05:10 10 -10 W
player2 15NOV2008:15:05:33 35 -35 W
player1 15NOV2008:15:05:33 35 15 L
player1 15NOV2008:15:05:33 35 15 L
run;
proc sql; create table B(toAdd num,node char(100)); quit;
proc sql; insert into B (toAdd, node)
values(5, 'X')
values(3, 'L')
values(7, 'W') ;
quit;
我想显示没有虚拟赌注的平均值,以及包括虚拟赌注的平均值。我添加了虚拟赌注,如下所示:
proc sort data=A out=A; by node; run;
data A;
modify A B;
by node;
do i = 1 to toAdd;
stake = 0;
stakediff = -1;
dummy = 1;
output;
end;
run;
问题是当我将数据制成表格时,因为实际上没有两个不同的类别,它没有显示我想要什么
proc tabulate data=A;
class node dummy;
var stake winnings;
table node="",stake="" * (Mean="")*(dummy="" ALL);
run;
我使用虚拟赌注来创建一个基于大“N”的均值。我会在PROC报告中这样做,并以较大的“N”作为分子手动计算平均值,但我需要执行Kruskal-Wallis和卡方检验。让赌注为零的虚拟赌注更容易保持简单,并在每个类别中保持正确的计数。此外,在没有每个类别中的虚拟下注的情况下,动态计算标准误差(或从PROC TABLATE创建的结果中提取标准误差)是非常重要的
我怎么能只显示上面PROC TABLATE的结果,而不显示0、1和所有类别,因为当虚拟值为1时,这些条目是没有意义的?理想情况下,我希望将“无虚拟对象”视为0,“有虚拟对象”视为1,并将ALL列的结果显示为“WTIH虚拟对象”=1类别。然后,我可以在“NODE”类变量上执行KRUSKAL-WALLIS,在虚拟类变量上执行卡方检验,因为目前为止,我无法在测试中仅将0类和1类作为类来执行这些测试
如果我可以将类别dummy=0中的所有行复制到类别dummy=1中,我认为这将解决问题。您的“如果我可以”基本上是正确的想法。你需要修正你的数据以反映你想要的分组;如果我理解正确,dummy=0应该只是非总计下注,dummy=1应该是dummy和非总计下注。因此,需要两次输出dummy=0行,一次输出dummy=1,一次输出dummy=0 比如:
data A;
modify A B;
by node;
output;
dummy=1;
output;
do i = 1 to toAdd;
stake = 0;
stakediff = -1;
dummy = 1;
output;
end;
run;