好像又发现了sas的一个bug
sas吧
全部回复
仅看楼主
level 8
我在做proc univariate时尝试计算符号秩检验(signrank),发现在我的数据集中sas计算结果是8.5,而我按照sas官方文档的计算公式手动计算是得到了8。很奇怪是为什么会出现这个差异。图1是我的计算过程,图2是sas9.4的计算结果,图3是sas官方文档的公式,
下面是我的完整代码:
data p1;
length
USUBJID $40
randid $4
GRP $2
TRTSEQA $2
TRTA $1
PARAM $8
;
infile datalines truncover;
input
USUBJID :$40.
randid :$4.
GRP :$2.
TRTSEQA :$2.
TRTA :$1.
PARAM :$8.
PPORRES_RAW :$20.
;
if find(PPORRES_RAW, '/') then do;
_num = input(scan(PPORRES_RAW, 1, '/'), best32.);
_den = input(scan(PPORRES_RAW, 2, '/'), best32.);
PPORRES = _num / _den;
end;
else PPORRES = input(PPORRES_RAW, best32.);
format PPORRES 18.15;
drop PPORRES_RAW _num _den;
datalines;
01-S006K005RTRTRTmax4/3
01-S006K005RTRTTTmax8/3
01-S009K006TRTRTTmax5/3
01-S014K008RTRTTTmax2
01-S016K009RTRTRTmax8/3
01-S016K009RTRTTTmax7/3
01-S017K010TRTRTTmax7/3
01-S017K010TRTRRTmax3
01-S019K011TRTRTTmax2
01-S019K011TRTRRTmax7/3
01-S022K012RTRTRTmax3.5
01-S022K012RTRTTTmax7/3
01-S026K013RTRTRTmax5/3
01-S026K013RTRTTTmax1
01-S031K014TRTRTTmax5/3
01-S031K014TRTRRTmax7/3
01-S032K015RTRTRTmax4/3
01-S032K015RTRTTTmax4/3
01-S036K017RTRTTTmax4/3
01-S038K018TRTRTTmax5
01-S038K018TRTRRTmax5
01-S044K019TRTRTTmax3
01-S044K019TRTRRTmax8/3
01-S047K020RTRTRTmax4/3
01-S047K020RTRTTTmax4/3
01-S049K021TRTRTTmax8/3
;
run;
data R(keep=randid pporres) T(rename=(pporres=pporres1) keep=randid pporres);
set p1;
select(trta);
when ('R') output R;
when ('T') output T;
end;
run;
proc sort data=r;by randid;run;
proc sort data=t;by randid;
data rt;
merge r t;
by randid;
d=pporres-pporres1;
if d=. then delete;
run;
proc univariate data=rt noprint ;
var d;
output out=rt1 signrank=signrank;
run;
2025年10月11日 07点10分 1
1