如何在另一列中找到值增加的最后日期?

Mar*_*ark 3 r date

我在R中有一个数据框,看起来像这样:

person  date         level
Alex    2007-06-01   3
Alex    2008-12-01   4
Alex    2009-12-01   3
Beth    2008-03-01   6
Beth    2010-10-01   6
Beth    2010-12-01   6
Mary    2009-11-04   9
Mary    2012-04-25   9
Mary    2013-09-10   10
Run Code Online (Sandbox Code Playgroud)

我首先按"人"排序,然后按"日期"排序.

我试图找出每个人最后一次增加"水平"的时间.理想情况下,输出看起来像:

person  date
Alex    2008-12-01
Beth    NA
Mary    2013-09-10
Run Code Online (Sandbox Code Playgroud)

Gre*_*gor 8

运用 dplyr

library(dplyr)

dat %>% group_by(person) %>%
    mutate(inc = c(F, diff(level) > 0)) %>%
    summarize(date = last(date[inc], default = NA))
Run Code Online (Sandbox Code Playgroud)

产量:

Source: local data frame [3 x 2]

  person       date
1   Alex 2008-12-01
2   Beth       <NA>
3   Mary 2013-09-10
Run Code Online (Sandbox Code Playgroud)