我有一张婚姻状况(列)可能性不同的表,我该如何挑选一个价值最高的表并保留列名?
例如,以下是我的原始数据集:
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
;
答案 0 :(得分:2)
对要搜索的变量进行数组。使用MAX()函数查找最大值。然后使用WHICHN()函数在该值首次出现的数组中找到索引。然后使用VNAME()函数将数组引用转换为变量的名称。
data want ;
set test;
array pct pct_: ;
name = vname(pct[whichn(max(of pct[*]),of pct[*])]);
run;
答案 1 :(得分:0)
您可以使用proc sql
和case
表达式:
proc sql;
select (case when pct_married >= greatest(pct_common_law, pct_single)
then 'pct_married'
when pct_common_law >= pct_single
then 'pct_common_law'
else 'pct_single'
end) as which_is_biggest
from missover;