У меня есть фрейм данных, который выглядит так:
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
ДАННЫЕ
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)
Функция изменения сработала отлично, спасибо. Выбрать и отфильтровать не получилось, но после этого я справился.
Если вам нужна помощь в том, почему подход «создание фрейма данных с учетом времени» не сработал, нам, вероятно, понадобится более подробный и легко воспроизводимый пример. Некоторые рекомендации здесь, если вам интересно: stackoverflow.com/questions/5963269/…