我有一个如下所示的数据框:
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 ......
我尝试创建一个数据框只有我想要保留的时间,但我似乎并不认为时间是一个数字,也不是一个名字。当我试图直接删除我不需要的那些时,我得到了同样的错误。它可能很简单,但我没有找到任何解决方案。
有什么建议吗?
答案 0 :(得分:1)
我们可以将time
列转换为包lubridate下的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
数据强>
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)