R 使用最早的日期时间切片行

R 使用最早的日期时间切片行,r,dplyr,slice,R,Dplyr,Slice,我有一个数据框,我只想过滤与最早日期时间相对应的行。以下是我的数据帧: 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"),

我有一个数据框,我只想过滤与最早日期时间相对应的行。以下是我的数据帧:

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 %>% 
  arrange(DATETIME_OF_PROCEDURE) %>% 
  group_by(ID) %>%
  slice(min(DATETIME_OF_PROCEDURE))

我还尝试了
slice(第一次(DATETIME\u OF_过程))
,但还是不起作用

既然您已经安排了
切片(1)
工作正常:

df %>% 
    group_by(ID) %>% 
    filter(DATETIME_OF_PROCEDURE == min(DATETIME_OF_PROCEDURE))
df %>% 
  arrange(DATETIME_OF_PROCEDURE) %>% 
  group_by(ID) %>%
  slice(1)
其他使用
which.min
,因为
filter
采用索引:

df %>% 
  group_by(ID) %>%
  slice(which.min(DATETIME_OF_PROCEDURE))
小心数据中的关联。如果要保留所有领带,请使用
filter

两者都返回相同的值:

来源:本地数据帧[2 x 2]
组别:ID[2]
程序的ID日期时间\u
1     1   2013-02-12 09:00:42
2     2   2014-01-22 02:00:42

由于您已经安排了
切片(1)
可以正常工作:

df %>% 
  arrange(DATETIME_OF_PROCEDURE) %>% 
  group_by(ID) %>%
  slice(1)
其他使用
which.min
,因为
filter
采用索引:

df %>% 
  group_by(ID) %>%
  slice(which.min(DATETIME_OF_PROCEDURE))
小心数据中的关联。如果要保留所有领带,请使用
filter

两者都返回相同的值:

来源:本地数据帧[2 x 2]
组别:ID[2]
程序的ID日期时间\u
1     1   2013-02-12 09:00:42
2     2   2014-01-22 02:00:42

正确的语法应该是
df%%>%arrange(DATETIME\u OF_PROCEDURE)%%>%groupu by(ID)%%>%slice(1L)
但是
slice
不会捕获领带。正确的语法应该是
df%%>arrange(DATETIME\u OF_OF_PROCEDURE)%%>%groupu by(ID)%%slice(1L)
但是
slice
不会捕获领带。