【问题标题】:Remove duplicates while prioritizing a specific value in a different column in R删除重复项,同时优先考虑 R 中不同列中的特定值
【发布时间】:2020-04-30 16:21:22
【问题描述】:

我需要从“参考”列中删除重复项,但如果该组参考号存在,则优先保留 NODCCODE 中具有特定值的行。如果该 NODCCODE 值不存在,则保存哪一行都没有关系。最后应该只有唯一的参考编号,但目标 NODCCODE 和相关参考编号的所有实例仍然存在。在起始数据集中,每组参考编号只有一个 NODCCODE 实例。在下面的示例中,我使用了“8835430200”的目标 NODCCODE

我有以下数据...

structure(list(Reference = c("BBM101", "BBM101", 
"BBM101", "BBM101", "BBM101"), NODCCODE = c("8835020301", 
"8835400201", "8835430201", "8835430401", "8837010102"), Number = c(1, 
16, 30, 17, 2), hogN = c(0, 0, 0, 0, 0)), row.names = c(NA, -5L
), class = c("tbl_df", "tbl", "data.frame"))
# A tibble: 5 x 4
  Reference     NODCCODE   Number  hogN
  <chr>         <chr>       <dbl> <dbl>
1 BBM101 8835020301      1     0
2 BBM102 8835400201     16     0
3 BBM102 8835430200     30     0
4 BBM103 8835430401     17     0
5 BBM103 8837010102      2     0

结束结果:

structure(list(Reference = c("BBM101", "BBM102", "BBM103"), 
               NODCCODE = c("8835020301", "8835430200", "8835430401"), 
               Number = c(1, 30, 17), hogN = c(0, 0, 0)), 
          row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"))
# A tibble: 5 x 4
  Reference     NODCCODE   Number  hogN
  <chr>         <chr>       <dbl> <dbl>
1 BBM101 8835020301      1     0
2 BBM102 8835430200     30     0
3 BBM103 8835430401     17     0

如果需要更多起始行,请告诉我。我试着保持它非常基本。

我尝试了很多方法,包括

df2 <- bionum[order(bionum$Reference, bionum$NODCCODE=="8835430200"),]
de.duped <- df2[!duplicated(df2$Reference),]

我得到了正确的参考编号计数,但它把我的目标编号放在参考组的最后并保存每个参考的第一个实例,因此输出不包含我的任何目标 NODCCODE 值。

我可以让它在参考编号内将我的目标 NODCCODE 排序到顶部吗?然后我正在尝试的其余代码将保留该 NODCCODE 的第一个实例。

我还查看了我能找到的所有其他相关帖子,但似乎无法找到解决方法。

【问题讨论】:

    标签: r duplicates


    【解决方案1】:

    我想通了,我只需要在 bionum$NODCCODE=="8835430200" 周围添加 -() 以使其排序到顶部。简单的。

    df2 <- bionum[order(bionum$Reference, -(bionum$NODCCODE=="8835430200")),]
    de.duped <- df2[!duplicated(df2$Reference),]
    

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 2013-02-10
      • 2021-01-10
      • 2021-10-15
      • 1970-01-01
      相关资源
      最近更新 更多