How to find different elements of two time vectors?

Given these two time vectors:

a<-seq(as.POSIXct("2010-01-01 05:00:00"), as.POSIXct("2010-01-02 23:55:00"), by = '5 min') b<-seq(as.POSIXct("2010-01-01 00:00:00"), as.POSIXct("2010-01-03 23:55:00"), by = '10 min') 

How to get different elements between these two vectors? I tried:

 union(setdiff(a, b), setdiff(b, a)) 

But the return values ​​are not in time format.

+5
source share
2 answers

Only operations that save the "POSIXct" class are used here:

 c(a[!a %in% b], b[!b %in% a]) 
+5
source

This will also work (using the default start):

 as.POSIXct(union(setdiff(a, b), setdiff(b, a)), origin = '1970-01-01') #[1] "2010-01-01 05:05:00 IST" "2010-01-01 05:15:00 IST" "2010-01-01 05:25:00 IST" "2010-01-01 05:35:00 IST" "2010-01-01 05:45:00 IST" #[6] "2010-01-01 05:55:00 IST" "2010-01-01 06:05:00 IST" "2010-01-01 06:15:00 IST" "2010-01-01 06:25:00 IST" "2010-01-01 06:35:00 IST" # this checks a U b = (a - b) U (b - a) U (a /\ b) for PoSIxct objects, should evaluate to true all(sort(as.POSIXct(union(union(setdiff(a, b), setdiff(b, a)), intersect(a, b)), origin = '1970-01-01')) == sort(as.POSIXct(union(a, b), origin = '1970-01-01'))) # TRUE 
+3
source

Source: https://habr.com/ru/post/1261825/


All Articles