Sas 基于数据步长变量检索列

Sas 基于数据步长变量检索列,sas,Sas,我在写一份SAS的工作。对于这个SAS工作,我需要执行以下操作-- 检索字段ActiveColumn的值。此值将是表中另一列的名称 将ActiveValue设置为等于由ActiveColumn命名的字段的值 基本上,我正在尝试写一个版本,在这个版本中,我不需要事先写出每一个列名-- 最简单的方法是什么 多谢各位 这听起来像是垂直转置。如果所有字段都是字符,则可以这样做: data want; set have; array fields city state zip; do _t = 1 to

我在写一份SAS的工作。对于这个SAS工作,我需要执行以下操作--

  • 检索字段
    ActiveColumn
    的值。此值将是表中另一列的名称
  • ActiveValue
    设置为等于由
    ActiveColumn
    命名的字段的值
  • 基本上,我正在尝试写一个版本,在这个版本中,我不需要事先写出每一个列名--

    最简单的方法是什么


    多谢各位

    这听起来像是垂直转置。如果所有字段都是字符,则可以这样做:

    data want;
    set have;
    array fields city state zip;
    do _t = 1 to dim(fields);
      if lowcase(activeColumn)=vname(fields[_t]) then activeValue=fields[_t];
      *may want an OUTPUT here.;
    end;
    run;
    
    如果它们是混合类型,则需要两个数组和循环。如果您打算循环所有字段,则可能不需要ActiveColumn;您只需在循环中将ActiveColumn设置为vname(字段[\u t])

    如果您想让它更灵活,您可以使用
    数组字段\u character\ux
    它将使用所有字符变量(因此,您不必显式指定它们)

    data want;
    set have;
    array fields city state zip;
    do _t = 1 to dim(fields);
      if lowcase(activeColumn)=vname(fields[_t]) then activeValue=fields[_t];
      *may want an OUTPUT here.;
    end;
    run;