【发布时间】:2017-10-06 05:24:52
【问题描述】:
我有一个数据框,我想只过滤与最早日期时间相对应的行。以下是我的数据框:
library(lubridate)
df<-data.frame(ID=rep(1:2,5:6),DATETIME_OF_PROCEDURE=rep(c(ymd_hms("2013-03-16 03:00:42"),
ymd_hms("2013-02-12 08:00:42"),
ymd_hms("2014-06-19 01:00:42"),
ymd_hms("2014-01-22 01:00:42"),
ymd_hms("2014-06-12 02:00:40")),
c(3,2,2,2,2)))
我想得到:
# > df
# ID DATETIME_OF_PROCEDURE
# 1 1 2013-02-12 16:00:42
# 2 1 2013-02-12 16:00:42
# 3 2 2014-01-22 09:00:42
# 4 2 2014-01-22 09:00:42
我尝试了以下方法,但它给出了一个空数据框。
df %>%
arrange(DATETIME_OF_PROCEDURE) %>%
group_by(ID) %>%
slice(min(DATETIME_OF_PROCEDURE))
我也尝试过slice(first(DATETIME_OF_PROCEDURE)),但还是不行。
【问题讨论】:
-
正确的语法是
df %>% arrange(DATETIME_OF_PROCEDURE) %>% group_by(ID) %>% slice(1L),但slice不会捕获平局。