我在 SAS 中有两个表,表 A 和表 B。假设我想编写一些 SAS 代码来获取表“Desired Output”。我该怎么做?
表A:
Observation Var1 Var2
1 0 0
2 1 2
3 2 1
4 0 0
表B:
Var Level Lookup
Var1 0 0.1
Var1 1 0.3
Var1 2 0.5
Var2 0 0.7
Var2 1 0.8
Var2 2 0.9
期望的输出:
Observation Var1 Var2 Var1_new Var2_new
1 0 0 0.1 0.7
2 1 2 0.3 0.9
3 2 1 0.5 0.8
4 0 2 0.1 0.9
据我了解,这可能涉及SAS中的SQL,但我不确定。我不知道该怎么做。伪代码可能看起来像这样,但我不知道如何实际使其工作:
data DATA_OUT.DESIRED_OUTPUT;
set DATA_IN.TABLE_A;
set PP.TABLE_B key=(Var Level);
Var1_new = TABLE_B["Var1" Var1][Lookup];
Var2_new = TABLE_B["Var2" Var2][Lookup];
run;
如何在 SAS 中实现所需的输出?
最佳答案
这是一个使用哈希对象来存储表 B 的方法。
data A ;
input var1 var2;
cards;
0 0
1 2
2 1
0 0
;
data B;
input Var :$32. Level Lookup;
cards;
Var1 0 0.1
Var1 1 0.3
Var1 2 0.5
Var2 0 0.7
Var2 1 0.8
Var2 2 0.9
;
data want;
if _n_=1 then do;
if 0 then set b;
dcl hash h(dataset: 'b');
h.definekey('var','level');
h.definedata('lookup');
h.definedone();
end;
set a;
h.find(key:'Var1',key:var1);
lookup1=lookup;
h.find(key:'Var2',key:var2);
lookup2=lookup;
drop var level lookup;
run;
关于sql - 基于每个变量的 SAS 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675317/