SAS:将观察结果放入 bin 中并保持最接近它的观察结果
SAS: Putting observations in bin and keep the ones closest to it
我有一个包含一些变量的观察列表。我需要将它们放入一个箱子(下方),并且在每个箱子中只保留一个最接近箱子编号的观测值:
- 垃圾桶
- 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 等级,但我无法摆脱其余部分或与 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))
;
我有一个包含一些变量的观察列表。我需要将它们放入一个箱子(下方),并且在每个箱子中只保留一个最接近箱子编号的观测值:
- 垃圾桶
- 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 等级,但我无法摆脱其余部分或与 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))
;