我正在处理来自柏林的一些GTFS数据,我现在正在这里碰壁。
柏林的所有公交车站都有一个stop_times.txt文件,其中有500万行。 两列(Arrival_time和Departure_time)包含异常,例如
Arrival_time:112:30:0,而不是常规格式的11:20:30。
我真的不知道如何提取这些特定的行并从数据集中删除它们。我无法提出一种能够检测到它的算法。我尝试使用字符串的长度(应为8 00:00:00 = 8个字符),但错误的字符串也为8长。
您知道一种简单的方法来确保格式始终为xx:xx:xx并删除所有其他格式吗?
谢谢...
编辑:
因此,现在尝试以下建议的解决方案后,它不起作用,因为它只会告诉我有多少行是恶意的,而不是告诉我在何处以及如何删除这些行。
我的想法基本上是现在:
“ 00:00:00”,其中必须为长度“ 8”和2个数字,中间用“:”分隔。有没有一种方法可以检测此模式中的异常,然后将其删除?我真的不知道该如何解决这个问题。
谢谢
答案 0 :(得分:0)
lubridate
是一个非常有用的软件包,我不记得没有它怎么做。
require(lubridate)
times <- c("112:30:0", "11:20:30")
datetimes <- paste("01.01.2018", times)
parsed.datetimes <- lubridate::dmy_hms(datetimes)
#[1] NA "2018-01-01 11:20:30 UTC"
#Warning message:
# 1 failed to parse.
此功能将在格式解析失败时自动告诉您,唯一的是,它以datetime格式作为输入而不是时间,但是您可以轻松地解决显示的问题。
为了确切地知道哪些解析失败,您可以应用:
failed.list <- which(is.na(parsed.datetimes))