【问题标题】:Remove rows from a dataframe where values in two columns dont match in R从数据框中删除两列中的值在 R 中不匹配的行
【发布时间】:2019-10-25 18:37:46
【问题描述】:

我想从数据框中删除“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"))

提前致谢。 干杯

【问题讨论】:

  • 试试subset,即subset(dataframe, (as.character(X2) != as.character(X3)) &amp; (as.character(X2) == as.character(X4)))
  • @akrun 的工作就像一场梦。谢谢!

标签: r dataframe


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 1970-01-01
      • 2022-12-02
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多