sql - 基于每个变量的 SAS 查找

标签 sql database dictionary sas key

我在 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/

相关文章:

python - 如何从 Pandas 字典中删除/xa0?

python - 如何将数据框转换为字典

java - 从 SQL 到 HTML UL 的树状结构

mysql - 具有连接和多个分组依据的 SQL 查询

php - 循环遍历前十个数据库条目的通知系统

c# - 使用C#远程创建数据库

mysql - 在 Perl 中实现跨线程/进程队列

mysql - 如果数字不存在则插入

sql - ORACLE SQL 使用窗口函数运行 TOTAL 和 daytotal

ios - 字典中的 swift 行动不可预测