首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证重复行/列

验证重复行/列
EN

Stack Overflow用户
提问于 2017-06-05 10:57:13
回答 2查看 126关注 0票数 0

我需要进行数据验证,以确定CodeA1、CodeA2和CodeA3(列)中是否有任何重复项。

代码语言:javascript
复制
  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)中的行都应该是唯一的。

谁能帮上忙吗?

我想识别所有行的副本,结果如下所示

代码语言:javascript
复制
  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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-05 11:16:55

一种可能的解决办法是:

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2017-06-05 12:03:48

使用applyunique的另一个可能的解决方案。这也会将双NA标识为复制的,尽管您可以修改它。

代码语言:javascript
复制
 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      FALSE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44367428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档