2017-10-12 135 views
0

我有这些日期时间:查找当前日期是否是同一个日期

library(lubridate) 
my_date_times <- dmy_hm(c("17/05/16 23:49", "17/05/16 09:39", "08/08/16 23:21", "08/12/16 09:23", "26/02/17 08:03", "12/10/17 12:04", "12/10/17 10:03")) 

我要计算一个日期是否是一样的前一行的日期。如果当前日期与之前的日期相同,那么我会在same_date变量的两个行中添加TRUE。我不关心这两次不匹配。希望这段代码能够解释我所追求的。

same_date <- c(TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE) 
library(tibble) 
df <- data_frame(my_date_times, same_date) 
df 

# A tibble: 7 x 2 
     my_date_times same_date 
       <dttm>  <lgl> 
1 2016-05-17 23:49:00  TRUE 
2 2016-05-17 09:39:00  TRUE 
3 2016-08-08 23:21:00  FALSE 
4 2016-12-08 09:23:00  FALSE 
5 2017-02-26 08:03:00  FALSE 
6 2017-10-12 12:04:00  TRUE 
7 2017-10-12 10:03:00  TRUE 
+3

'DF $ same_date < - C(T,DIFF(as.Date(DF $ my_date_times))== 0)'? – lukeA

+0

到目前为止,你有什么尝试? – useR

回答

1

的OP请求添加TRUE两行如果当前日期是同前。这就是为什么diff()的方法在这里不起作用。

相反,我们可以按日期进行分组,并检查该组是否仅包含一行或多行。

library(data.table) 
setDT(df)[, same_date := .N > 1, by = as.Date(my_date_times)][] 
  my_date_times same_date 
1: 2016-05-17 23:49:00  TRUE 
2: 2016-05-17 09:39:00  TRUE 
3: 2016-08-08 23:21:00  FALSE 
4: 2016-12-08 09:23:00  FALSE 
5: 2017-02-26 08:03:00  FALSE 
6: 2017-10-12 12:04:00  TRUE 
7: 2017-10-12 10:03:00  TRUE 
相关问题