在R中随时间选择行

在R中随时间选择行,r,dataframe,time,lubridate,R,Dataframe,Time,Lubridate,我有一个如下所示的数据框: Subject Time Freq1 Freq2 ... A 6:20 0.6 0.1 A 6:30 0.1 0.5 A 6:40 0.6 0.1 A 6:50 0.6 0.1 A 7:00 0.3 0.4 A 7:10 0.1 0.5 A 7:20 0.1 0.5 B

我有一个如下所示的数据框:

Subject  Time  Freq1  Freq2 ...
  A      6:20    0.6    0.1
  A      6:30    0.1    0.5
  A      6:40    0.6    0.1
  A      6:50    0.6    0.1
  A      7:00    0.3    0.4
  A      7:10    0.1    0.5
  A      7:20    0.1    0.5
  B      6:00    ...    ...
我需要删除时间范围内的行,它不是从7:00到7:30。因此,在本例中,所有的6:00、6:10、6:20

我曾尝试创建一个数据框,其中只包含我想要保留的时间,但我似乎无法将时间识别为数字或名称。当我试图直接删除那些我不需要的东西时,我也会遇到同样的错误。这可能很简单,但我还没有找到任何解决方案


有什么建议吗?

我们可以将
time
列转换为包下的
Period
类,然后根据该列过滤数据帧

library(dplyr)
library(lubridate)

dat2 <- dat %>%
  mutate(HM = hm(Time)) %>%
  filter(HM < hm("7:00") | HM > hm("7:30")) %>%
  select(-HM)
dat2
#   Subject Time Freq1 Freq2
# 1       A 6:20   0.6   0.1
# 2       A 6:30   0.1   0.5
# 3       A 6:40   0.6   0.1
# 4       A 6:50   0.6   0.1
# 5       B 6:00    NA    NA
库(dplyr)
图书馆(lubridate)
dat2%
突变(HM=HM(时间))%>%
过滤器(HMHM(“7:30”))%%>
选择(-HM)
dat2
#受试者时间频率1频率2
#1A 6:20 0.6 0.1
#2 A 6:30 0.10.5
#3 A 6:40 0.6 0.1
#4 A 6:50 0.6 0.1
#5B 6:00NA
数据

dat <- read.table(text = "Subject  Time  Freq1  Freq2
  A      '6:20'    0.6    0.1
                  A      '6:30'    0.1    0.5
                  A      '6:40'    0.6    0.1
                  A      '6:50'    0.6    0.1
                  A      '7:00'    0.3    0.4
                  A      '7:10'    0.1    0.5
                  A      '7:20'    0.1    0.5
                  B      '6:00'    NA     NA",
                  header = TRUE)

dat如果您想了解为什么“仅凭时间创建数据帧”方法不起作用,我们可能需要一个更详细、更容易复制的示例。如果您感兴趣,这里有一些指导:mutate函数工作得很好,谢谢。选择和筛选不起作用,但我可以管理之后。