合并两个不完整因素

时间:2018-12-13 17:24:00

标签: r

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

在将相同观察值的四个数据集合并之后,我得到了两个编码条件的变量,但是这些变量是由不同的研究人员完成的,并且两者都不完整。请考虑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中实现这一目标?还存在一种检查a和b之间不一致的方法吗?

1 个答案:

答案 0 :(得分:1)

我们可以将其替换为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)