1
我需要通过几个条件对一个表进行子集分析。如何按日期和顺序对表进行子集划分?
df <- data.frame(id=c("A","A","B","B","B","C"), seq=c(1,2,1,2,3,1), date=as.Date(c("2005-10-01", "2008-12-01","2001-03-05","2004-05-09","2008-10-15","2010-02-27")), value=c(20,12,80,55,77,57))
id | seq | date | value
--------------------------------
A | 1 | 2005-10-01 | 20
A | 2 | 2008-12-01 | 12
B | 1 | 2001-03-05 | 80
B | 2 | 2004-05-09 | 55
B | 3 | 2008-10-15 | 77
C | 1 | 2010-02-27 | 57
我需要一个方法来为每个id返回一个值。具体而言,最高序列与日期的值小于或等于给定日期。鉴于说2004-07-01
,它应该返回:
id | value
--------------
A | 20
B | 55
C | 57
(请注意,在特殊情况下日期小于第一次约会,它应该返回指定seq = 1,不是没有)
这是可能的?一气呵成?
+1不错的单行! – Ben
好功夫!但它并没有给出正确的答案。 – jenswirf
我注意到结果是不同的,但它是因为ID为B的值55在所需的起点之前,还是我错过了某些东西? – johannes