我有一张约30列的表格。列可以具有X,N,C,D的值。有没有办法编写单个case语句来扫描特定值的所有列,在本例中为C,如果列中确实有一行值,那么将列名输出到新列?例如:
'X'| 'C'| 'N'| 'D'| 'COL2'
此行中的Column2具有我正在搜索的值'C',因此'New_column'的值为'COL2'。
希望这是有道理的。谢谢你所有的时间!
答案 0 :(得分:4)
这应该会给你一个想法。 WhichC返回与参数2,3,...匹配的第一个参数的索引.VNAME返回变量的名称。
25 data _null_;
26 array col[4] $1 ('X' 'C' 'N' 'D');
27 l = whichc('C',of col[*]);
28 length cColName $32;
29 if l then cColname = vname(col[l]);
30 put _all_;
31 run;
col1=X col2=C col3=N col4=D l=2 cColName=col2 _ERROR_=0 _N_=1