【发布时间】: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