【问题标题】:Detecting and removing wrong timestamps from dataframe R从数据帧 R 中检测和删除错误的时间戳
【发布时间】:2018-09-29 18:05:18
【问题描述】:

下次试试看:

我得到了一个data.frame,它有 500 万行和一个名为“到达时间”的列,格式如下

"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]

请帮忙!

【问题讨论】:

  • 试试grep("^[0-9]{2}:[0-9]{2}:[0-9]{2}", vec, value = TRUE)

标签: r dataframe time rows


【解决方案1】:

您可以使用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

【讨论】:

    【解决方案2】:

    我们可以使用grep

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

    或者另一个选项是来自chrontimes

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

    数据

    vec <- c("11:30:00", "12:30:00", "13:30:00",  "111:4:00")
    

    【讨论】:

      猜你喜欢
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 2020-03-07
      相关资源
      最近更新 更多