我试图在观察中计算一个值。我的数据看起来像
ID LAND DECILE DISTANCE
1 85 1 1.5
1 85 2 3.4
.
.
1 85 9 13.2
2 76 1 0.9
2 76 2 2.7
我试图计算每个ID十个十分位数(decile10 - decile(i+1))/(decile10 - decile1)
,其中i是第i个十分位数。我不担心十分位数10.感谢您的帮助!一整天都在苦苦挣扎。
答案 0 :(得分:1)
在数据集上获取多个内容的简单方法:合并。在这里,我们将第10个十分位数合并到所有10个十分位数,并使用retain
来保持第一个十分位数值。如果排序是一个困难,还有其他方法可行,但如果您的数据不是非常大,这是最简单的。
proc sort data=have;
by id decile;
run;
data merged;
merge have have(where=(decile=10) rename=(distance=distance_10 decile=decile10) keep=id decile distance);
by id;
retain distance_1;
if first.id then distance_1=distance; *assuming sorted by ID then decile;
... your calculations, using distance_1 and distance_10 ...
run;