首页 > 解决方案 > 如何选择具有最高值的列

问题描述

我有一张包含不同婚姻状况可能性的表格(列),我如何选择具有最高值的表格并保留列名?

例如,下面是我的原始数据集:

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
;

标签: sqlsas

解决方案


制作要搜索的变量数组。使用 MAX() 函数查找最大值。然后使用 WHICHN() 函数查找数组中第一次出现该值的索引。然后使用 VNAME() 函数将数组引用转换为变量的名称。

data want ;
  set test;
  array pct pct_: ;
  name = vname(pct[whichn(max(of pct[*]),of pct[*])]);
run;

推荐阅读