加入具有特定条件的2个表

时间:2016-12-02 07:15:54

标签: join merge macros sas

我有2张桌子。首先是原始的,包含row_number和几个字段。

row_num col1 col2 1 a b 2 c d 3 e f

第二个表是来自第一个表的输出,显示错误类型,col_name和行号:

m_id字段row_num m1 col1 1 m1 col1 3 m2 col2 2

我的任务是将表1中每个字段的值连接到第二个表,具体取决于row_num和column,应该像smth一样:

m_id字段row_num值 m1 col1 1 a m1 col1 3 e m2 col2 2 d

我尝试使用varios transposes,比如使用by和id参数,但我知道使用宏会更容易。

proc sort data=a1;
by row_num;
run;
proc transpose data=a1 out=a2;
by row_num;
var m_id;
run;

1 个答案:

答案 0 :(得分:1)

您可以合并(已排序)集合并使用VVALUEX()以编程方式按名称获取变量的(字符)值。

类似的东西:

data combined;
  merge first second;
  by row_num;
  value = vvaluex(field);
  keep m_id field row_num value;
run;

这假设row_num在第一组中是唯一的。