r - R:按小时过滤:分钟 tibble 数据框列
问题描述
我是 R 新手,我希望通过“HourMinStamp”列过滤这个 tibble,但是我似乎无法通过适当的 HH:MM 格式来获得成功(除了 0)。我希望只保留值为“15:00”的行。
> VIXData
# A tibble: 1,115,217 x 9
ContractName TradeDate HourMinStamp Open High Low Last NumPriceChanges Volume
<chr> <date> <time> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 F.US.VX 2016-02-29 17:01 2180 2180 2180 2180 1 4
2 F.US.VX 2016-02-29 17:02 2180 2182 2180 2182 1 5
3 F.US.VX 2016-02-29 17:03 2180 2180 2180 2180 1 2
4 F.US.VX 2016-02-29 17:09 2180 2180 2179 2179 1 22
5 F.US.VX 2016-02-29 17:11 2175 2175 2175 2175 1 1
6 F.US.VX 2016-02-29 17:13 2175 2175 2175 2175 0 4
7 F.US.VX 2016-02-29 17:21 2175 2175 2175 2175 0 10
8 F.US.VX 2016-02-29 17:22 2175 2175 2175 2175 0 2
9 F.US.VX 2016-02-29 17:23 2178 2178 2177 2177 2 4
10 F.US.VX 2016-02-29 17:29 2175 2175 2175 2175 1 1
# ... with 1,115,207 more rows
我可以毫无问题地成功选择“HourMinStamp”列:
> select(VIXData, HourMinStamp)
# A tibble: 1,115,217 x 1
HourMinStamp
<time>
1 17:01
2 17:02
3 17:03
4 17:09
5 17:11
6 17:13
7 17:21
8 17:22
9 17:23
10 17:29
# ... with 1,115,207 more rows
我也可以毫无问题地过滤“00:00”:
> filter(VIXData, HourMinStamp == 0)
# A tibble: 577 x 9
ContractName TradeDate HourMinStamp Open High Low Last NumPriceChanges Volume
<chr> <date> <time> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 F.US.VX 2016-03-01 00'00" 2195 2195 2190 2190 1 5
2 F.US.VX 2016-03-02 00'00" 1950 1950 1947 1947 1 2
3 F.US.VX 2016-03-07 00'00" 1905 1905 1905 1905 0 14
4 F.US.VX 2016-03-08 00'00" 1900 1900 1900 1900 1 2
5 F.US.VX 2016-03-10 00'00" 1910 1910 1910 1910 0 1
6 F.US.VX 2016-03-14 00'00" 1910 1910 1910 1910 1 1
7 F.US.VX 2016-03-16 00'00" 1905 1905 1905 1905 1 2
8 F.US.VX 2016-03-17 00'00" 1825 1825 1825 1825 0 1
9 F.US.VX 2016-03-22 00'00" 1710 1710 1710 1710 0 9
10 F.US.VX 2016-03-23 00'00" 1700 1700 1700 1700 0 2
# ... with 567 more rows
大多数文档似乎都处理日期总是与 HH:MM 标记配对的情况,而不仅仅是使用 HH:MM 标记本身。任何指导将不胜感激。
解决方案
用 定义时间后尝试过滤parse_time("17:01")
,例如:
library(tidyverse)
df<-tibble(HourMinStamp = parse_time(c("17:01", "17:02", "17:03")))
# A tibble: 3 x 1
HourMinStamp
<time>
1 17:01
2 17:02
3 17:03
filter(df, HourMinStamp==parse_time("17:01"))
注意,parse_time()
是从tidyverse
readr
包里。
推荐阅读
- reactjs - 使用大写方法时的 ReactJS 问题
- assembly - 当我修改代码时,磁盘映像变得无法启动
- android - 在 GenyMotion 虚拟设备上与 SELinux 交互
- python - 如何计算 csv 文件中的特定数据并在 python 中打印该数字?
- php - 将数据从表单发送到 mysql 数据库
- python - 使用python从没有数据名的json文件中提取url
- c# - 使用 Firebase 在实时数据库中的不同节点上加入 UserId
- r - 将箭头放在R中的行中间
- java - Java 存储过程中没有 imaps 错误的提供者
- django - 为什么即使我遵循 order_by() 函数的常规用法,我也会收到 UnorderedObjectList 警告?