我曾尝试搜索多个地点,但尚未找到解决方案。我想知道这里有人可以帮我吗?
[我正在尝试计算SAS 9.4中多个行和列的中间值(带有Q1和Q3),我正在使用的数据集如下所示:
Obs tumor_size_1 tumor_size_2 tumor_size_3 tumor_size_4
1 4 1.5 1 1
2 2.5 2 . .
3 3 . . .
4 4 . . .
5 3.5 1 . .
上下文是针对一个人可能患有1(或更多)肿瘤的医学状况。每行代表1个人。每个人最多可能有4个肿瘤。我想确定整个队列中所有肿瘤的中位大小(而不仅仅是每个人的中位大小)。有办法计算吗?预先谢谢你。
数据的转置将产生一个数据结构(形式),该数据结构(形式)适用于使用PROC SUMMARY
和CLASS
语句进行的各种汇总组合下的中位数和四分位数计算。
示例:
data have;
input
patient tumor_size_1 tumor_size_2 tumor_size_3 tumor_size_4; datalines;
1 4 1.5 1 1
2 2.5 2 . .
3 3 . . .
4 4 . . .
5 3.5 1 . .
;
proc transpose data=have out=new_have;
by patient;
var tumor:;
run;
proc summary data=new_have;
class patient;
var col1;
output out=want Q1=Q1 Q3=Q3 MEDIAN=MEDIAN;
run;
结果
patient _TYPE_ _FREQ_ Q1 Q3 MEDIAN
. 0 20 1 3.50 2.25
1 1 4 1 2.75 1.25
2 1 4 2 2.50 2.25
3 1 4 3 3.00 3.00
4 1 4 4 4.00 4.00
5 1 4 1 3.50 2.25