【问题标题】:R: Filtering by an hour:min tibble dataframe columnR:按小时过滤:分钟 tibble 数据框列
【发布时间】:2021-07-02 18:26:32
【问题描述】:

我是 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 标记本身。任何指导将不胜感激。

【问题讨论】:

    标签: r date datetime


    【解决方案1】:

    在使用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 包。

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 2023-03-08
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2018-01-26
      • 1970-01-01
      • 2011-08-28
      相关资源
      最近更新 更多