我有一个数据集,其中包含以下相关变量以及许多其他变量:
data have;
input group $ score weight;
datalines;
A 12 1.2
A 19 1
A 23 1.7
A 40 2
A 11 1
A 16 1.5
A 34 1.3
A 45 1
A 28 1.8
A 30 1.2
A 24 1.1
A 28 1
B 31 1.5
B 32 1.6
B 36 1.9
B 18 2
B 28 1.4
B 25 1.3
B 22 1.8
B 27 1.6
B 31 1.5
B 42 1.7
;
run;
我习惯使用 proc rank 语句在 SAS 中对组进行排序,例如:
proc rank data=have groups=4 out=want;
by group;
var score;
ranks score_quartiles;
run;
但是 PROC RANK 不处理权重,而对于我所研究的内容,我需要使用 proc 单变量,转置结果,删除重复的关系,然后合并回原始数据集。但我不知道该怎么做。
非常感谢您的帮助。
为什么不直接从 PROC UNIVARIATE 的输出中生成一些 IF/THEN 逻辑,而不是尝试生成格式。
因此,首先使用 PROC UNIVARIATE 和 WEIGHT 语句来生成您想要用于排名的截点。
然后使用这些来生成 IF/THEN 逻辑以根据 GROUP 和 SCORE 分配 RANK。
然后运行代码
对于导致此数据步骤的示例数据: