从 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
我正在尝试使用 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