Обнаружение и удаление неправильных меток времени из кадра данных R - PullRequest
0 голосов
/ 29 сентября 2018

следующая попытка здесь:

Я получил data.frame с 5 миллионами строк и столбцом под названием «время прибытия», который имеет следующий формат

"11:30:00"
"12:30:00"
"13:30:00"

и так далее.

В некоторых местах в data.frame он содержит ошибочные записи, подобные этой:

"111:4:00"

Длина обоих одинакова (8).Как я могу быстро удалить эти ошибочные записи?Я предполагаю, что нужно искать строку определенного типа и разрешать только:

[0-2][0-9]:[0-5][0-9]:[0-5][0-9]

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Мы можем использовать grep

grep("^[0-9]{2}:[0-9]{2}:[0-9]{2}$", vec, value = TRUE)
#[1] "11:30:00" "12:30:00" "13:30:00"

Или другой вариант times из chron

library(chron)
vec[!is.na(times(vec))]
#[1] "11:30:00" "12:30:00" "13:30:00"

data

vec <- c("11:30:00", "12:30:00", "13:30:00",  "111:4:00")
0 голосов
/ 29 сентября 2018

Вы можете удалить ошибочные записи, используя strptime:

# Sample data.frame 
df <- data.frame(
   Date=c("11:30:00",
     "12:30:00",
     "13:30:00",
     "111:4:00")
)
# Remove the entries which are not following the date format
df[is.na(strptime(df$Date,format="%H:%M:%S")),]

Вывод:

[1] 111:4:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...