【问题标题】:R: remove rows with same elements, but in different columns [duplicate]R:删除具有相同元素但在不同列中的行[重复]
【发布时间】:2017-01-27 15:49:19
【问题描述】:

抱歉,如果这是一个重复的问题,因为它看起来很简单,可能已经被问过,尽管快速搜索该问题并没有找到与我的特定问题完全匹配的问题 - 如果它存在,会感谢您分享这个问题。

数据框供参考 - 我已经手工制作了示例数据框,所以暂时没有 dput(),但可以提供:
.

> head(data[, 1:8], n = 4)
             A         B        C         D         E         F       
1       Donald      Will      Joe     Chris      Greg     Isaiah  
2       Donald      Will     Jeff     Chris      Greg     Isaiah
3       Donald      Will     Jeff     Steve      Greg     Isaiah
4       Donald      Will     Jeff     Steve    Isaiah       Greg

.
在这个(我的较大的)数据框中的小例子中,我需要删除所有重复的行,如果一行与另一行具有所有相同的名称,则该行被认为是重复的,而不考虑名称在哪些列中。所以在这个在这种情况下,第 4 行将被视为与第 3 行重复,我想删除(任一)行。

值得注意的是,列的顺序在我的数据框中非常重要,因此我不能简单地按字母顺序对每一行进行排序,然后删除完全相同的重复项。

感谢您的帮助!!

【问题讨论】:

  • 您可以创建一个新变量,在其中对名称进行排序,然后将它们作为一个字符串粘贴在一起。现在您可以使用该字符串通过重复函数查找重复项
  • 好的,谢谢,会试一试 - 同时,正在寻找/希望找到与数据框一起使用的解决方案/功能

标签: r


【解决方案1】:
df <- read.table(header=TRUE,stringsAsFactors=FALSE,text="
             A         B        C         D         E         F       
1       Donald      Will      Joe     Chris      Greg     Isaiah  
2       Donald      Will     Jeff     Chris      Greg     Isaiah
3       Donald      Will     Jeff     Steve      Greg     Isaiah
4       Donald      Will     Jeff     Steve    Isaiah       Greg")


df <- df[!duplicated(t(apply(df,1,sort))),]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 2018-08-09
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多