【问题标题】:R extract rows from data frame that do not matchR从数据框中提取不匹配的行
【发布时间】:2014-09-03 16:51:47
【问题描述】:

我有两个具有相似行名的数据框(例如 a 和 b)。如何提取 data.frame a 中 data.frame b 中不存在的行?

谢谢, jd

【问题讨论】:

  • “相似”还是“相同”?
  • 相同。对不起,我的语言不准确

标签: r matrix dataframe extraction


【解决方案1】:
a[!rownames(a)%in%rownames(b),]

【讨论】:

    【解决方案2】:

    这个怎么样?

    a <- data.frame(V1 = rnorm(10), V2 = rnorm(10))
    row.names(a) <- paste("row", row.names(a))
    
    > a
                    V1          V2
    row 1  -0.26695225 -1.72322854
    row 2   0.17966753 -2.59861185
    row 3   0.09679525 -0.18304155
    row 4  -0.21904183 -0.67646542
    row 5  -0.64441966 -0.58033626
    row 6   0.28901284  0.01743280
    row 7  -1.38555961  0.09184929
    row 8  -0.60452736  0.08304690
    row 9  -0.03898833  0.01075546
    row 10 -0.21569958 -0.25948764
    
    b <-data.frame(V1 = rnorm(5), V2 = rnorm(5))
    row.names(b) <- paste("row", row.names(b))
    
    > b
                 V1         V2
    row 1  1.412045 -0.6990107
    row 2 -1.433099  0.8693957
    row 3  1.061640  1.2938895
    row 4 -1.715340 -0.6044137
    row 5  1.131158 -0.3148006
    
    a[setdiff(row.names(a), row.names(b)),]
    
    > a[setdiff(row.names(a), row.names(b)),]
                    V1          V2
    row 6   0.28901284  0.01743280
    row 7  -1.38555961  0.09184929
    row 8  -0.60452736  0.08304690
    row 9  -0.03898833  0.01075546
    row 10 -0.21569958 -0.25948764
    

    【讨论】:

      【解决方案3】:

      如下使用?setdiff

      a[ setdiff( rownames(a), rownames(b) ), ]
      

      【讨论】:

        猜你喜欢
        • 2021-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多