从 R 中的数据中查找已知模式中的错误?

Finding errors in known patterns from data in R?

我正在尝试使用 R 来确定数据集中的错误。数据集包括一列中以秒为单位的时间以及另一列中是否发生 "Run"。 RunStart 列中的“0”表示 运行 的开始,而“1”只是 运行.

的延续

在下面的示例 table 中,运行 中的时间间隔应为 10 秒

如果所有后续值都是 10 秒的倍数,我想知道 运行 何时开始,并确定所有不正确的行。在示例中,除第 9 行外,所有行都是正确的,它与相同 运行 中的第 8 行相差 9 秒。如何隔离大型数据集中的第 9 行等错误?

   Time RunStart
1   10        0
2   20        1
3   30        1
4  101        0
5  111        1
6  121        1
7  202        0
8  212        1
9  221        1

我找不到从哪里开始,我目前正在研究 "plyr" 包和 R 网站上 R 文档中的数据清理介绍。我试图找出其中的错误的完整数据集超过 300 000 行。

您可以使用 diff 来获取时差,检查哪些不是十的倍数并将其与连续记录相匹配。

intersect(which((c(0,diff(df$Time)) %% 10) != 0), 
      which(df$RunStart == 1))
[1] 9

有了dplyr我们可以做到:

library(dplyr)


df %>% 
  mutate(regular = RunStart == 0 | Time - lag(Time) == 10)
#>   Time RunStart regular
#> 1   10        0    TRUE
#> 2   20        1    TRUE
#> 3   30        1    TRUE
#> 4  101        0    TRUE
#> 5  111        1    TRUE
#> 6  121        1    TRUE
#> 7  202        0    TRUE
#> 8  212        1    TRUE
#> 9  221        1   FALSE