r - 如何从动物园对象中获取特定时间的所有日期?
问题描述
假设我有一个日期/时间 (POSIXct) 的动物园对象作为我的索引和值:
... val
2006-08-01 10:00:00 1
2006-08-01 10:10:00 2
2006-08-01 10:20:00 3
2006-08-01 10:30:00 4
...
2006-08-02 10:00:00 5
2006-08-02 10:10:00 6
2006-08-02 10:20:00 7
2006-08-02 10:30:00 8
...
这应该很简单,但我想不出如何获取所有日期/时间的列表,假设时间是上午 10:10:00 ...
示例动物园数据对象:
Lines <- "datetime val
2006-08-01T10:00 1
2006-08-01T10:10 2
2006-08-01T10:20 3
2006-08-01T10:30 4
2006-08-01T10:40 10
2006-08-02T10:10 5
2006-08-02T10:20 6
2006-08-02T10:30 7
2006-08-02T10:40 8"
library(zoo)
z <- read.zoo(text = Lines, tz = "", header = TRUE, format = "%Y-%m-%dT%H:%M")
注意:我更喜欢 base-R/zoo 实现,但其他包会很有趣
解决方案
一种方法是用来lubridate
提取时间分量。这假设second()
等于 0。
library(lubridate)
z[hour(index(z)) == 10 & minute(index(z)) == 10]
您也可以强制转换为字符,然后搜索特定时间。
z[grep("10:10:00", index(z))]
出于好奇,我运行了一个基准测试。结果可能是由于类型转换,在小数据集上显然是微不足道的。
但是,随着您添加更多标准,它会变慢。如果加进去seconds(index(z)) == 0
,lubridate
方法基本一样。grep
解决方案可能是要走的路。
library(microbenchmark)
benchmark <- microbenchmark(
lubridate = z[hour(index(z)) == 10 & minute(index(z)) == 10],
grep = z[grep("10:10:00", index(z))]
)
推荐阅读
- delphi - UniqueString 可以是一个函数吗?
- c# - 使用 IDispose 关闭非托管资源
- python - 如何使用 cv2 处理所有帧
- postgresql - 如何在 postgresql 中使用 select 查询插入数据?
- hybris - 如何从灵活搜索中查询“道具”表?
- microsoft-teams - 无法在 iFrame/MS Teams 自定义选项卡中使用身份平台
- javascript - 将 Flash 文件转换为 HTML
- php - 如何使用 php 将 pdf 上传到谷歌云存储?
- spring-boot - System.setProperty("javax.net.ssl.trustStore","classpath:file.jks") 不工作
- configuration - 如何在 Logback 中设置记录器的 contextName?