根据值识别变量名称

时间:2017-09-20 16:49:08

标签: sas

我有一个值,我需要找到数据集中具有此值的变量。所有都是字符变量,搜索值也是字符变量。

示例:

要搜索的值: 123456

dataset and search value

输出:Var1和Var3

  • 所有变量都是字符
  • 这是样本数据集:实际上有数百个要搜索的变量

提前致谢

1 个答案:

答案 0 :(得分:2)

您希望将WHICHC与数组结合使用,然后VNAME找出变量的名称。

data have;
input x $ y $ z $;
datalines;
123456 234567 345678
234567 345678 123456
345678 234567 456789
;;;;
run;

data want;
  set have;
  array vars x y z;
  pos = whichc('123456',of vars[*]);
  if pos>0 then varname = vname(vars[pos]);
run;
如果找不到,则

WHICHC返回0。然后,您可以在此数据集上使用PROC FREQ来查找具有此值的所有值的列表。

这种特殊方法只有在每行只能存在一次时才有效;如果它可以存在于同一行的两个变量中,则必须循环遍历数组并迭代搜索它。