下面的示例数据,请问用SAS如何实现,有个思路就可以。
谢谢。
希望达成这样的目的(判断标记):
对每个sell列:
如果值是NA,则标记为NA。
如果值不是NA,则判断其值是否大于buy列历史最低值(先排除已经删除的最低值):
如果是,则标记为1,同时删除buy列的历史最低值;
否则,标记为0;同时删除buy列该历史最低值。
历史最低值,例如,如果sell列属于Date=5,则buy列的历史最低值只判断Date=1~5,不判断Date=6~8.
先排除已经删除的最低值,例如,如果下表第8行数值是25.2,则标记为0,因为buy列的最低值25.18已经被删除了。
最近大脑不好使,今天在电脑弄了小半天,逻辑是清晰的,但如何用SAS实现总是有点模糊。
目前想到的是,每次提取2个子集:
A:第N行的子集;(得到当前行的sell值)
B:第1-N行的子集;(得到历史行的最小buy值,并记录最小值所在的行数minrow)
如果sell>min(buy),则A子集增加一列标记为1,否则标记为0。合并所有A子集。
回到原始数据集,将minrow的buy值清空。
但感觉算法很不优雅。应该有什么递归可以简单地实现。