【发布时间】:2015-06-04 21:41:57
【问题描述】:
我有一个很大的数据集,并希望为每个月的日期条目最接近该月最后一天的所有行过滤它。因此,最接近每月最后一天的那一天可能有多个条目。
例如: 原始数据集
date price name
05-01-1995 1,2 abc
06-01-1995 1,5 def
07-01-1995 1,8 ghi
07-01-1995 1,7 mmm
04-02-1995 1,9 jkl
27-02-1995 2,1 mno
目标:
date price name
07-01-1995 1,8 ghi
07-01-1995 1,7 mmm
27-02-1995 2,1 mno
我有 2 个想法,但在 SAS 中的循环(用于遍历几个月)内实现它失败了。 1.idea:创建新列,指示当前月的最后一天(intnx() 函数);然后过滤最接近该月最后一天的所有条目:
date price name last_day_of_month
05-01-1995 1,2 abc 31-01-1995
06-01-1995 1,5 def 31-01-1995
07-01-1995 1,8 ghi 31-01-1995
04-02-1995 1,9 jkl 28-02-1995
27-02-1995 2,1 mno 28-02-1995
2.idea:简单地过滤每个月具有最高日期的条目(可能使用 max 函数?!)
如果您能帮助我,我将非常高兴,因为我已经习惯了普通的编程语言,并且刚开始使用 SAS 进行研究。
【问题讨论】:
-
这个问题和By group processing in SAS的问题很相似。
-
请注意,您必须将原始数据集按日期降序排列,以使其与已接受的副本答案中的解决方案一起使用。
-
感谢您链接到类似问题。我还有一个问题:如何调整解决方案,所以我不仅得到每个月的最后一个条目,而且得到最接近月底的所有条目(我编辑了问题。例如:最后两个条目一个月是 27 号,那么我想得到这两个条目)
-
一个控制问题,你确定你也不想在
name上分组吗? -
不,这对我来说并不重要。