从R中两列值不匹配的数据框中删除行

时间:2019-10-25 18:37:46

标签: r dataframe

我想从“ X2”和“ X3”列中的数字不匹配的数据框中删除行。我只希望在“ X2”和“ X4”列中只保留匹配值的行。

这是一个示例数据集:

dataframe <- data.frame(X1 = c("OP2413iiia","OP2413iiia","OP2413iiib","OP2413iiia","OP2413iiib","OP2413iiic","OP2413iiia","OP2413iiib","OP2413iiic","OP2645ii_a","OP2413iiia","OP2413iiib","OP2413iiic","OP2645ii_a","OP2645ii_b","OP2413iiia","OP2413iiib","OP2413iiic","OP2645ii_a","OP2645ii_b","OP2645ii_c","OP2413iiia","OP2413iiib","OP2413iiic","OP2645ii_a","OP2645ii_b","OP2645ii_c","OP2645ii_d","OP2413iiia","OP2413iiib","OP2413iiic","OP2645ii_a","OP2645ii_b","OP2645ii_c","OP2645ii_d"),
                         X2 = c("3","3","3","3","3","3","3","3","3","4","3","3","3","4","2","3","3","3","4","2","4","3","3","3","4","2","4","2","3","3","3","4","2","4","2"),
                        X3 = c("OP2413iiib","OP2413iiic","OP2413iiic","OP2645ii_a","OP2645ii_a","OP2645ii_a","OP2645ii_b","OP2645ii_b","OP2645ii_b","OP2645ii_b","OP2645ii_c","OP2645ii_c","OP2645ii_c","OP2645ii_c","OP2645ii_c","OP2645ii_d","OP2645ii_d","OP2645ii_d","OP2645ii_d","OP2645ii_d","OP2645ii_d","OP2645ii_e","OP2645ii_e","OP2645ii_e","OP2645ii_e","OP2645ii_e","OP2645ii_e","OP2645ii_e","OP3088i__a","OP3088i__a","OP3088i__a","OP3088i__a","OP3088i__a","OP3088i__a","OP3088i__a"),
                        X4 = c("3","3","3","4","4","4","2","2","2","2","4","4","4","4","4","2","2","2","2","2","2","4","4","4","4","4","4","4","3","3","3","3","3","3","3"),
                         value = c("1.610613e+00","1.609732e+00","8.829263e-04","1.080257e+01","1.111006e+01","1.110978e+01","4.048302e+00","5.610458e+00","5.609584e+00","9.911490e+00","1.078518e+01","1.133728e+01","1.133686e+01","1.738092e+00","9.247411e+00","5.170646e+00","6.074909e+00","6.074287e+00","6.212711e+00","3.769029e+00","5.793390e+00","1.124045e+01","1.163326e+01","1.163293e+01","7.752766e-01","1.008434e+01","1.222854e+00","6.469443e+00","1.610828e+00","1.784774e+00","1.784235e+00","9.434803e+00","4.512563e+00","9.582847e+00","4.309312e+00"))

先谢谢了。 干杯

2 个答案:

答案 0 :(得分:2)

我们可以使用两个与&subset中的base R连接的表达式。由于所有列都是factor类(使用默认设置data.framestringsAsFactors = TRUE创建的,因此最好将character转换为as.character类(或在创建stringsAsFactors = FALSE时使用data.frame

subset(dataframe, (as.character(X2) != as.character(X3)) & 
          (as.character(X2) == as.character(X4)))

答案 1 :(得分:0)

  

“ X2”和“ X3”列中的数字不匹配

根据您的示例,我想您想编写X2和X4。