首页 > 解决方案 > 合并两个不完全因子

问题描述

我发现自己处于以下情况:

在将四个数据集合并到相同的观察结果之后,我最终得到了两个变量来编码条件,但是这些是由不同的研究人员完成的,并且两者都存在不完整性。请考虑 MWE:

ID <- c("a1", "a2", "a3",  "a4", "a5", "a6")
a <- c("sch", "con", "unknown", "sch", "con", "con")
b <- c("sch", "con", "sim", "sch", "unknown", "con")


dt <- data.frame(ID, a, b)
dt

打印出来:

  ID       a       b
1 a1     sch     sch
2 a2     con     con
3 a3 unknown     sim
4 a4     sch     sch
5 a5     con unknown
6 a6     con     con

我想创建一个新变量来补充任何未完成的条目,所以看起来像:

  ID       a       b     ab
1 a1     sch     sch     sch
2 a2     con     con     con
3 a3 unknown     sim     sim
4 a4     sch     sch     sch
5 a5     con unknown     con
6 a6     con     con     con

标签: r

解决方案


我们可以将其替换为NA然后使用coalesce

dt$ab <- do.call(dplyr::coalesce, replace(dt[-1], dt[-1] == 'unknown', NA))

或使用pmax

do.call(pmax, c(replace(dt[-1], dt[-1] == 'unknown', NA), list(na.rm = TRUE)))
#[1] "sch" "con" "sim" "sch" "con" "con"

数据

dt <- data.frame(ID, a, b, stringsAsFactors = FALSE)

推荐阅读