按数字范围合并

Mur*_*ray 2 merge sas range

我想根据范围而不是显式数字将一个人的姓名分配给一个数字.使用格式可以做到这一点,但由于我在数据集中有名称,我宁愿避免手动编写proc format.

data names;                      
   input low high name $;  
   datalines;
1   10  John
11  20  Paul
21  30  George
31  40  Ringo
;

data numbers;
    input number;
    datalines;
33
21
17
5
;
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

data output;
    input number name $;
    datalines;
33  Ringo
21  George
17  Paul
5   John
;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Lau*_*ick 5

你可以使用PROC SQL这样做:

proc sql;
 create table output as
 select numbers.number, names.name
 from numbers left join names
  on numbers.number ge names.low
  and numbers.number le names.high
;
quit;
Run Code Online (Sandbox Code Playgroud)