【问题标题】:Removing duplicate values row-wise in R在 R 中逐行删除重复值
【发布时间】:2014-11-07 18:07:59
【问题描述】:

我正在使用 R 中的数据集,但我遇到了一个我似乎无法解决的问题。我的数据目前如下所示:

Team    Person1   Person2   Person3   Person4   Person5  Person6  Person7
6594794 37505959  37469784    NA         NA       NA        NA      NA
6595053 30113392  33080042  21537147  32293683    NA        NA      NA
6595201 697417    22860111  NA           NA       NA        NA      NA
6595380 24432987  32370372  11521625   362790   24432987 22312802 32432267
6595382 12317669  25645492  NA           NA       NA        NA      NA
6595444 8114419   236357    32545314  22247108    NA        NA      NA
6595459 2135269   32332907  32332907  32436550    NA        NA      NA
6595468 33590928  10905322  32319555  10439608    NA        NA      NA
6595485 33080810  33162061  NA           NA       NA        NA      NA
6595496 36901773  34931641  NA           NA       NA        NA      NA
6595523 512193    8747403   NA           NA       NA        NA      NA
6595524 32393404  113514    NA           NA       NA        NA      NA
6595526 37855554  37855512  NA           NA       NA        NA      NA
6595536 18603977  1882599   332261    10969771  712339  2206680  768785

这些列一直延伸到“Person24”。

我发现有些团队不止一次列出了同一个人。因此,我需要找出一种方法来识别至少一个人的 ID 号被多次列出的团队,并创建所有这些团队 ID 的完整列表,或者干脆从数据集中删除这些团队。

例如,团队 #6595380(第 4 行)有一个重复成员 - 人员 #24432987 出现在 Person1 列和 Person5 列中。另一个示例是团队 #6595459(第 7 行) - 人员 #32332907 出现在 Person2 列和 Person3 列中。因此,我要么正在寻找一种方法来记录出现此类事件的团队,要么只是将它们从数据集中删除。

【问题讨论】:

  • 你能详细说明一下吗?在您的示例中,您要删除哪一行?
  • @DavidArenburg 感谢您的建议,大卫!我在原始帖子的基础上进行了扩展,以包含一些我在文本中描述的问题的假设实例。

标签: r duplicates grouping


【解决方案1】:

Yuo 可以使用 apply 识别行中重复的人员 ID

dat$dups <- apply(dat[-1], 1, function(i) any(duplicated(i[!is.na(i)])))

或者正如 Simon O'Hanlon 在 cmets 中指出的那样

dat$dups <- apply(dat[-1], 1, function(i) any(duplicated(i, incomparables = NA)))

然后您可以使用它来查找具有重复的团队编号或排除它们:

# Return teams that have duplicate person ids
dat$Team[ dat$dups ]
# Exclude rows with duplicates
dat[ ! dat$dups , ]

【讨论】:

  • +1 但你也可以使用duplicated( i , incomparables = NA )
  • @SimonO'Hanlon;谢谢 - 之前没有使用过那个 arg
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 2017-09-20
  • 2023-03-21
相关资源
最近更新 更多