SAS:将观测值放入bin中并保持最接近的观测值

问题描述 投票:0回答:1

我有一些观察变量清单。我需要将它们放在一个容器中(下面),并且在每个与容器编号最接近的容器中只保留一个观察值:

  • Bins
  • 0.94
  • 0.96
  • 0.98
  • 1.00
  • 1.02
  • 1.04
  • 1.06

数据

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 rank,但是我无法摆脱其余部分或与垃圾箱匹配(据我所知,'closest'之类的东西并不存在)。

sas data-manipulation bin
1个回答
0
投票

具有自动合并功能的SAS SQL可以非常简洁地执行查询。一致的合并到0.02级别可以使ROUND函数将bin值计算到最接近的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))
  ;
© www.soinside.com 2019 - 2024. All rights reserved.