假设这是我的数据。
dt <- data.table(F = c(1, 2, 3, 4, 5, 6, 7, 7, 4, 6, 7, 5),
M = c("a", "b", "c", "b", "c", "a", "d", "d", "b", "b", "d", "c"));
请使用 data.table 包或任何非常有效的东西,以便它可以在非常大的数据集上使用。
理想的解决方案是这样的:
c(0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0)
dt[,error := +(length(unique(M))>1), F][]
F M error
1: 1 a 0
2: 2 b 0
3: 3 c 0
4: 4 b 0
5: 5 c 0
6: 6 a 1
7: 7 d 0
8: 7 d 0
9: 4 b 0
10: 6 b 1
11: 7 d 0
12: 5 c 0
注意 data.table 提供了
uniqueN
函数来执行 length(unique(..))
—— 由 @ThomasIsCoding 提醒
使用
dt[,error := +(uniqueN(M)>1), F][]