提问人:Hack-R 提问时间:11/18/2016 更新时间:11/18/2016 访问量:64
如何让 POSIXct 与 == 一起使用
How to get POSIXct to work with ==
问:
我注意到这似乎不适用于 POSIXct:==
a <- structure(c(1466985600, 1464652800, 1464652800, 1464652800, 1472428800,
1466985600, 1468195200, 1472428800, 1472428800, 1474848000, 1464652800,
1468195200, 1476057600, 1464652800, 1472428800, 1472428800, 1460332800,
1460332800, 1460332800, 1460332800), class = c("POSIXct", "POSIXt"
), tzone = "UTC")
a
[1] “2016-06-27 世界协调时” “2016-05-31 世界协调时” “2016-05-31 世界协调时” “2016-05-31 世界标准时间” “2016-08-29 世界协调时” “2016-06-27 世界协调标准” “2016-07-11 世界协调时” “2016-08-29 世界协调时” [9] “2016-08-29 世界协调时” “2016-09-26 世界协调时” “2016-05-31 世界协调时” “2016-07-11 世界协调时” “2016-10-10 世界标准时间” “2016-05-31 世界协调时” “2016-08-29 世界协调时” “2016-08-29 世界协调时” [17] “2016-04-11 世界协调时” “2016-04-11 世界协调时” “2016-04-11 世界协调时” “2016-04-11 世界协调时”
table(a=="2016-06-27")
FALSE 20
table(a=="2016-06-27 UTC")
FALSE 20
table(a==as.POSIXct("2016-06-27 UTC"))
FALSE 20
table(a==as.POSIXct("2016-06-27"))
FALSE 20
a[a=="2016-06-27"]
character(0)
我怎样才能让它工作?
这会起作用,但我真的希望这不是我唯一的选择:
a[a==1466985600]
[1] "2016-06-27 UTC" "2016-06-27 UTC"
答:
3赞
Rich Scriven
11/18/2016
#1
除非在参数中指定,否则时区需要分开。您的代码在字符串中嵌入了时区,但默认格式是 和 ,因此时区被截断,默认为当前区域设置。我们可以找到 的时区 ,因为它是 的属性。format
"%Y-%m-%d"
"%Y/%m/%d"
a
attr()
a
table(a == as.POSIXct("2016-06-27", tz = attr(a, "tzone")))
# FALSE TRUE
# 18 2
评论
0赞
Dirk Eddelbuettel
11/20/2016
类似但可能更简单:.随时需要。当然,另一个关注点和相等性是,“真的”是一个浮点数,它有自己的一组问题——参见 R FAQ 7.31。a == utctime("2016-06-27", tz="UTC")
POSIXct
POSIXct
评论