简体   繁体   English

如何在R的tidyversse中使用dplyr根据时间(hh:mm:ss)过滤行?

[英]How to filter rows based on time (hh:mm:ss) using dplyr in tidyversse in R?

This is my data这是我的数据

library(tidyverse)
a<-tribble(
   ~"Date", ~"Time", ~"Name", ~"Value",
   "2020-06-03",   "00:15:00",   "DR.RADHAKRISHNAN SALAI",   0.166,
   "2020-06-03",   "00:30:00", "DR.RADHAKRISHNAN SALAI",   0.867,
   "2020-06-03",   "00:45:00", "DR.RADHAKRISHNAN SALAI",   0.906,
   "2020-06-03",   "01:00:00", "DR.RADHAKRISHNAN SALAI",   0.677,
   "2020-06-03",   "01:15:00", "DR.RADHAKRISHNAN SALAI",   0.077
 )

Solution needed:需要的解决方案:

I wanted to filter all rows based on time (eg: between 00:15:00 and 00:45:00)我想根据时间过滤所有行(例如:00:15:00 和 00:45:00 之间)

What i tried :我试过的:

a%>%
filter(Time => hms::as.hms(00:15:00) | Time <= hms::as.hms(00:45:00) )

But i didnt end up with what i expected .但我没有得到我所期望的结果。 Please help请帮忙

Use hour and minute as appropriate适当使用hourminute

library(lubridate)
library(tidyverse)

  
  a<-tribble(
    ~"Date", ~"Time", ~"Name", ~"Value",
    "2020-06-03",   "00:15:00",   "DR.RADHAKRISHNAN SALAI",   0.166,
    "2020-06-03",   "00:30:00", "DR.RADHAKRISHNAN SALAI",   0.867,
    "2020-06-03",   "00:45:00", "DR.RADHAKRISHNAN SALAI",   0.906,
    "2020-06-03",   "01:00:00", "DR.RADHAKRISHNAN SALAI",   0.677,
    "2020-06-03",   "01:15:00", "DR.RADHAKRISHNAN SALAI",   0.077
  )
  
  a %>%
    filter(hour(hms::as_hms(Time)) == 0,
           between(minute(hms::as_hms(Time)), 15, 45))
#> # A tibble: 3 x 4
#>   Date       Time     Name                   Value
#>   <chr>      <chr>    <chr>                  <dbl>
#> 1 2020-06-03 00:15:00 DR.RADHAKRISHNAN SALAI 0.166
#> 2 2020-06-03 00:30:00 DR.RADHAKRISHNAN SALAI 0.867
#> 3 2020-06-03 00:45:00 DR.RADHAKRISHNAN SALAI 0.906

Created on 2020-11-08 by the reprex package (v0.3.0)reprex 包(v0.3.0) 于 2020 年 11 月 8 日创建

Does this work:这是否有效:

library(dplyr)
a %>% mutate(min = as.numeric(substr(Time, 1,2)) * 60 + as.numeric(substr(Time, 4,5))) %>% 
filter(between(min,15,45)) %>% select(-min)
# A tibble: 3 x 4
  Date       Time     Name                   Value
  <chr>      <chr>    <chr>                  <dbl>
1 2020-06-03 00:15:00 DR.RADHAKRISHNAN SALAI 0.166
2 2020-06-03 00:30:00 DR.RADHAKRISHNAN SALAI 0.867
3 2020-06-03 00:45:00 DR.RADHAKRISHNAN SALAI 0.906
> 

Using base R :使用基础 R :

subset(a, as.POSIXct(Time, format = "%T") >= as.POSIXct('00:15:00', format =  '%T') & 
          as.POSIXct(Time, format = "%T") <= as.POSIXct('00:45:00', format =  '%T'))

#   Date       Time     Name                   Value
#  <chr>      <chr>    <chr>                  <dbl>
#1 2020-06-03 00:15:00 DR.RADHAKRISHNAN SALAI 0.166
#2 2020-06-03 00:30:00 DR.RADHAKRISHNAN SALAI 0.867
#3 2020-06-03 00:45:00 DR.RADHAKRISHNAN SALAI 0.906

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 按日期和时间 (HH:MM:SS) 过滤数据并将数据聚合到 R 中每月 5 分钟间隔的行中 - Filter the data by date and time (HH:MM:SS) and aggregate the data into rows of 5-minute intervals per month in R 在R中插入缺少时间的行(格式HH:MM:SS) - Insert rows for missing time (format HH:MM:SS) in R 在 R 中将时间格式从 HH:MM:SS 更改为 HH:MM - Change time format from HH:MM:SS to HH:MM in R 如何将时间 HH:MM:SS 转换为 R 中的十进制形式? - How to convert time HH:MM:SS to decimal form in R? 通过在R中添加缺少时间的行来填写缺少的时间步长(yyyy-mm-dd HH:MM:SS) - Fill in missing time steps (yyyy-mm-dd HH:MM:SS) by adding rows with missing times in R 如何在小时,时间,秒列中中断时间(因子类型-HH:MM:SS)? IN R - How to break time(factor type - HH:MM:SS) in hour, time, seconds column? IN R 使用 hms() 将 .csv 中的 HH:MM:SS 字符串转换为 R 中的 HH:MM:SS 向量 - Converting HH:MM:SS string in .csv to HH:MM:SS vector in R using hms() 将经过时间 (HH:MM:SS) 从 excel 导入 R - Importing elapsed time (HH:MM:SS) from excel into R 如何在 R 的 X 轴上绘制时间 (HH:MM:SS) - How do I plot time (HH:MM:SS) in X axis in R 给定 hh:mm:ss 格式的时间,使用基数 R 计算秒数 - Given the time in hh:mm:ss format, compute the number of seconds using base R
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM