我需要进行数据验证,以确定CodeA1、CodeA2和CodeA3(列)中是否有任何重复项。
CodeA1 CodeA2 CodeA3
1 1 NA 5
2 3 1 3
3 8 3 3
4 3 NA NA
5 4 1 2
6 1 8 3 所有列(CodeA1、CodeA2、CodeA3)中的行都应该是唯一的。
谁能帮上忙吗?
我想识别所有行的副本,结果如下所示
CodeA1 CodeA2 CodeA3 Duplicate
1 1 NA 5 No
2 3 1 3 Yes
3 8 3 3 Yes
4 3 NA NA No
5 4 1 2 No
6 1 8 3 No发布于 2017-06-05 11:16:55
一种可能的解决办法是:
dtset$Duplicate <- apply(dtset,1,function(x) any(table(x)>1))
dtset
########
CodeA1 CodeA2 CodeA3 Duplicate
1 1 NA 5 FALSE
2 3 1 3 TRUE
3 8 3 3 TRUE
4 3 NA NA FALSE
5 4 1 2 FALSE
6 1 8 3 FALSE发布于 2017-06-05 12:03:48
使用apply和unique的另一个可能的解决方案。这也会将双NA标识为复制的,尽管您可以修改它。
mydf <-
data.frame(
CodeA1 = c(1, 3, 8, 3, 4, 1),
CodeA2 = c(NA, 1, 3, NA, 1, 9),
CodeA3 = c(5, 3, 3, NA, 2, 3)
)
mydf$duplicated <-
apply(mydf[, 1:3], 1, function(x) {
ifelse(length(unique(x, is.na = T)) < length(x), TRUE, FALSE)
})
mydf
CodeA1 CodeA2 CodeA3 duplicated
1 1 NA 5 FALSE
2 3 1 3 TRUE
3 8 3 3 TRUE
4 3 NA NA TRUE
5 4 1 2 FALSE
6 1 9 3 FALSEhttps://stackoverflow.com/questions/44367428
复制相似问题