sql - 如何选择具有最高值的列
问题描述
我有一张包含不同婚姻状况可能性的表格(列),我如何选择具有最高值的表格并保留列名?
例如,下面是我的原始数据集:
data test;
infile datalines missover;
INPUT ID Gender $ pct_married pct_common_law pct_single;
datalines;
1 male 0.5 0.3 0.2
2 female 0.6 0.4
3 male 0.3 0.3 0.4
;
我想看到的是
data test2;
infile datalines missover;
INPUT ID Status $ pct_married pct_common_law pct_single;
datalines;
1 pct_married
2 pct_married
3 pct_single
;
解决方案
制作要搜索的变量数组。使用 MAX() 函数查找最大值。然后使用 WHICHN() 函数查找数组中第一次出现该值的索引。然后使用 VNAME() 函数将数组引用转换为变量的名称。
data want ;
set test;
array pct pct_: ;
name = vname(pct[whichn(max(of pct[*]),of pct[*])]);
run;