如何匹配SAS中的数据

How to match data in SAS

我有一个包含三个变量 var1var2Price 的数据集。 Pricevar2 的价格。 var1Var2 的子样本。现在,我想通过匹配 Var1 的名称与 Var2 来查找 var1 中每个产品的价格。 数据看起来像这样。谁能帮我解决这个问题。非常感谢

Var1    Var2    Price
apple           ?
        apple   2
banana          ?
        banana  2.1
apple           ?
orange          ?
        orange  4
banana          ?
        yoghurt 2

您可以通过 SQL 通过 var1/var2:

将您的价格合并到您的数据集来做到这一点
proc sql ;
create table output as
    select a.var1, a.var2, b.price
    from input a
    left join (select distinct var2, price
      from input 
      where not missing(var2)) as b
    on (a.var1=b.var2
    or a.var2=b.var2)
;quit ;

尝试使用散列table。

 data want;
   if 0 then set have(keep=var2 price where=(not missing(var2)));
   if _n_=1 then do;
      declare hash h (dataset:'have1(keep=var2 price where=(not missing(var2)))');
      h.definekey('var2');
      h.definedata('price');
      h.definedone();
      call missing(var2,price);
    end;
    set have;
    rc=h.find(key:var1);
    drop rc;
    run;