【问题标题】:Remove duplicated rows but ignore variable names [duplicate]删除重复的行但忽略变量名 [重复]
【发布时间】:2023-03-19 18:36:01
【问题描述】:

我想删除重复的行但忽略数据框的变量名称。 例如:

  dat1 = data.frame(var1 = head(letters), var2 = 1:6)
  dat1$var1 = as.character(dat1$var1)
  dat2 = data.frame(var1 = 1:4, var2 = c("a", "b", "c", "z"))
  dat = rbind(dat1, dat2)
  # > dat
  #    var1 var2
  # 1     a    1
  # 2     b    2
  # 3     c    3
  # 4     d    4
  # 5     e    5
  # 6     f    6
  # 7     1    a
  # 8     2    b
  # 9     3    c
  # 10    4    z

预期输出:

  # > dat
  #    var1 var2
  # 1     a    1
  # 2     b    2
  # 3     c    3
  # 4     d    4
  # 5     e    5
  # 6     f    6
  # 7     4    z

【问题讨论】:

    标签: r duplicates


    【解决方案1】:

    在 Base R 中你可以这样做:

    dat[!duplicated(do.call(function(x,y)paste(pmax(x,y),pmin(x,y)),unname(dat))),]
       var1 var2
    1     a    1
    2     b    2
    3     c    3
    4     d    4
    5     e    5
    6     f    6
    10    4    z
    

    您也可以使用igraph 库:

    library(igraph)
    dat%>%
      graph_from_data_frame(directed = F)%>%
      E%>%
      attr("vnames")%>%
      unique%>%
      read.table(text=.,sep="|",col.names = c("var1","var2"))
    
     var1 var2
    1    a    1
    2    b    2
    3    c    3
    4    d    4
    5    e    5
    6    f    6
    7    4    z
    

    【讨论】:

      【解决方案2】:

      你可以使用

      dat[!duplicated(t(apply(dat,1, sort))),]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        • 2017-09-18
        • 1970-01-01
        • 2018-05-31
        • 1970-01-01
        相关资源
        最近更新 更多