SAS:将观察结果放入 bin 中并保持最接近它的观察结果

SAS: Putting observations in bin and keep the ones closest to it

我有一个包含一些变量的观察列表。我需要将它们放入一个箱子(下方),并且在每个箱子中只保留一个最接近箱子编号的观测值:

数据

Variable    Price   Value_to_bin    Closest bin
a   0.630527682     0.935                0.94
b   0.441296291     0.979                0.98
c   0.350173415     0.969   
d   0.920932417     0.993   
e   0.361863025     0.959                0.96
f   0.027205755     1.003                1
g   0.878286791     1.045   
h   0.206434946     0.971   
i   0.259272294     1.021                1.02
j   0.081774863     0.982   
k   0.01146324      0.992   
l   0.283027273     1.037                1.04
m   0.188747537     0.993   
n   0.554786        1.064                1.06
o   0.784774        1.065

然后只保留最接近 bin 值的那些(即删除 'closest_bin' 变量中有空白的那些。

我尝试使用 proc 等级,但我无法摆脱其余部分或与 bin 匹配(据我所知,'closest' 之类的东西不存在)。

SAS SQL 具有自动重新合并功能,可以非常简洁地执行查询。一致的分箱到 0.02 级别允许 ROUND 函数计算分箱值到最接近的 0.02 单位。

proc sql;
  create table want as
  select 
    var,
    price,
    value,
    round(value,0.02) as valbin_02
  from have
  group by valbin_02
  having abs(valbin_02-value) = min(abs(valbin_02-value))
  ;