我希望将一组有序值转换为包含所有有序组合的新数据集。
例如,如果我有一个像这样的数据集:
Code Rank Value Pctile
1250 1 25 0
1250 2 32 0.25
1250 3 37 0.5
1250 4 51 0.75
1250 5 59 1
我想将其转换为类似的形式,在单行中具有等级1和2的值,在下一行中具有2和3的值,依此类推:
Code Min_value Min_pctile Max_value Max_pctile
1250 25 0 32 0.25
1250 32 0.25 37 0.5
1250 37 0.5 51 0.75
1250 51 0.75 59 1
使用少量值很简单,但是当“代码”系列的数量很大时(就像我的一样),我正在寻找一种更有效的方法。我想有一种简单的方法可以通过数据步骤完成此操作,但是我却逃不过来。
答案 0 :(得分:1)
好像您只想使用lag()
函数。
data want ;
set have ;
by code rank ;
min_value = lag(value) ;
min_pctile = lag(pctile) ;
rename value=max_value pctile=max_pctile ;
if not first.code ;
run;
结果
max_ max_ min_ min_
Obs Code Rank value pctile value pctile
1 1250 2 32 0.25 25 0.00
2 1250 3 37 0.50 32 0.25
3 1250 4 51 0.75 37 0.50
4 1250 5 59 1.00 51 0.75