具有多个观察结果的SAS计算

时间:2015-07-08 21:44:36

标签: sas

我试图在观察中计算一个值。我的数据看起来像

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.感谢您的帮助!一整天都在苦苦挣扎。

1 个答案:

答案 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;