R ID错误检查(不同的名称,相同的ID)

时间:2017-08-10 22:16:11

标签: r

我的数据包含人名和他们的ID号列表。并非所有具有相同名称的人都具有相同的ID号,但具有不同名称的每个人都应具有不同的ID号。像这样:

Name  david david john john john john megan bill barbara chris chris

ID     1      1    2    2    2    3   4    5    6   7   8  

我需要确保这些ID是正确的。所以,我想编写一个代码,说“仅当ID号相同但名称不同时才是子集”(所以我只是将ID错误分组)。我甚至不知道从哪里开始,因为我试过

df1<-df(subset(duplicated(df$Name) & duplicated(df$ID)))
Error in subset.default(duplicated(df$officer) & duplicated(df$ID)) : 
  argument "subset" is missing, with no default

但它没有用,我知道它不会告诉R匹配并比较名称和ID号。

提前非常感谢你。

1 个答案:

答案 0 :(得分:0)

更新了以下评论中的信息

以下是一些测试数据:

> DF <- data.frame(name = c("A", "A", "A", "B", "B", "C"), id=c(1,1,2,3,4,4))
> DF
  name id
1    A  1
2    A  1
3    A  2
4    B  3
5    B  4
6    C  4

所以...如果我正确理解你的问题,你想得到id 4有问题的信息,因为这个id出现了两个不同的名字(B和C)。

library(dplyr)
DF %>% group_by(id) %>% distinct(name) %>% tally()
# A tibble: 4 x 2
     id     n
  <dbl> <int>
1     1     1
2     2     1
3     3     1
4     4     2

在这里,我们得到一个摘要,看到n有两个不同的名称(id)4。您可以将其与filter结合使用,只能看到有多个ID的ID名称

> DF %>% group_by(id) %>% distinct(name) %>% tally() %>% filter(n > 1)
# A tibble: 1 x 2
     id     n
  <dbl> <int>
1     4     2

这有帮助吗?