查找当前日期是否与上一个日期相同

时间:2017-10-12 21:33:07

标签: r date

我有这些日期时间:

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

1 个答案:

答案 0 :(得分: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