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 之间的不一致吗?
解决方案
我们可以将其替换为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)
推荐阅读
- spring - 如何使 Spring Boot 测试应用程序独立于外部属性源?
- firebase - 从 Firebase 检索数据时出错(在 null 上调用了 getter 'cover'。)
- sql - 在 oracle SQL 中有没有办法使 SELECT COUNT 结果短路
- c# - 如何在 EF 核心中的现有实体之间创建关系?
- javascript - 如果数据库中存在表,则返回视图
- google-earth-engine - 如何通过 Google 地球引擎中的数字匹配条件减少图像集合
- css - 在 CSS 中缩放一种字体
- google-apps-script - 有没有办法将 Google Apps 脚本与 Apify 集成?
- python - 将 arcpy 导入到 spyder
- eclipselink - JPA 2.2 `EntityManager.merge` 插入而不是更新