2017-10-12 30 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を追加します。私は2つの時間が一致しない場合は心配していない。うまくいけば、このコードは私が何をしているのかを説明します。

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、差分(as.Date(DF $ my_date_times))== 0)'? – lukeA

+0

これまでに何を試しましたか? – useR

答えて

1

OPは、現在の日付が前回と同じであればTRUEに両方の行を追加するために要求しました。このため、diff()アプローチはここでは機能しません。

代わりに、日付でグループ化し、グループが1つの行または複数の行のみで構成されているかどうかを確認できます。

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 
関連する問題