如何找到两个时间向量的不同元素?
How to find different elements of 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')
如何获取这两个向量之间的不同元素?我试过:
union(setdiff(a, b), setdiff(b, a))
但是返回值不是时间格式。
这仅使用保留 "POSIXct"
class:
的操作
c(a[!a %in% b], b[!b %in% a])
这也有效(使用默认原点):
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
考虑这两个时间向量:
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')
如何获取这两个向量之间的不同元素?我试过:
union(setdiff(a, b), setdiff(b, a))
但是返回值不是时间格式。
这仅使用保留 "POSIXct"
class:
c(a[!a %in% b], b[!b %in% a])
这也有效(使用默认原点):
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