【问题标题】:R Remove rows if value in one column appears again in another column without loop [duplicate]R如果一列中的值再次出现在另一列中而没有循环,则删除行[重复]
【发布时间】:2018-09-05 05:42:54
【问题描述】:

我想删除两列组合在这两个相同列中也显示为反向组合的情况

下面是输入和期望的输出。

保留第一次还是第二次并不重要。

数据:

df <- data.frame(
  "x1" = 1:6, 
  "x2" = c(2,1,4,3,6,5), 
  "x3" = c("a","b", "c","d","e","f"))

【问题讨论】:

  • 您能否以我可以复制/粘贴到 R 的格式分享您的示例输入?图像是一种非常不友好的数据共享方式。 dput(your_input)dput(head(you_input)) 是制作复制/粘贴 R 对象的简单方法。
  • nopes = unname(as.list(DT[, 2:1])); res = DT[!nopes, on=names(DT)[1:2]]?不确定它是否有效,因为没有可以测试的示例。
  • 当然,试试这个:df
  • 有了这些数据,你可以做subset(df,!duplicated(t(apply(df[-3],1,sort))))
  • df[!duplicated(t(apply(df[-3],1,sort))),]

标签: r dplyr data.table


【解决方案1】:

第一个建议对我来说效果很好:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 2020-02-27
    • 2019-08-02
    • 1970-01-01
    • 2020-04-19
    • 2016-07-11
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多