我在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)
运用 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)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |