Выбор строк со временем в R - PullRequest
0 голосов
/ 01 мая 2018

У меня есть фрейм данных, который выглядит следующим образом:

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 ...

Я пытался создать фрейм данных только с теми временами, которые я хочу сохранить, но я, похоже, не распознаю время как число или как имя. И я получаю ту же ошибку при попытке напрямую удалить те, которые мне не нужны. Это, вероятно, довольно просто, но я не нашел никакого решения.

Есть предложения?

1 Ответ

0 голосов
/ 01 мая 2018

Мы можем преобразовать столбец 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

DATA

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...