r - 基于 2 个引用字符串列创建新列
问题描述
问题
我有 2 个数据框,一个参考数据框ref_df
和一个测试数据框test_df
。参考数据框由 2 列(字符串)组成:reference_A
并且reference_B
我想在我的test_df
数据框中创建一个新列,以说明如果两个字符串列test_A
和test_B
匹配reference_A
,reference_B
则“通过”,否则“失败”。
示例数据
参考数据框ref_df <- data.frame(
reference_A = c("ABC","HIJ","NOP","TUV"),
reference_B = c("DEF","KLM","QRS","WXY")
)
ref_df
reference_A reference_B
1 ABC DEF
2 HIJ KLM
3 NOP QRS
4 TUV WXY
test_df 数据框
test_df <- data.frame(
sample = c(1,2,3,4,5,6),
test_A = c("ABC","HII","NOP","TUV","TUS","KJF"),
test_B = c("DEF","KLM","QRR","WXY","WXZ", "KLM")
)
test_df
sample test_A test_B
1 1 ABC DEF
2 2 HII KLM
3 3 NOP QRR
4 4 TUV WXY
5 5 TUS WXZ
6 6 KJF KLM
所需的解决方案
test_qc
sample test_A test_B status
1 1 ABC DEF Pass
2 2 HII KLM Fail
3 3 NOP QRR Fail
4 4 TUV WXY Pass
5 5 TUS WXZ Fail
6 6 KJF KLM Fail
尝试失败
test_qc <- test_df %>%
select(test_A, test_B) %>%
mutate(status =
ifelse(test_A == ref_df$reference_A & test_B == ref_df$reference_B,
"Pass", "Fail"))
Warning messages:
1: Problem with `mutate()` input `status`.
ℹ longer object length is not a multiple of shorter object length
ℹ Input `status` is `ifelse(...)`.
2: In test_A == reference$reference_A :
longer object length is not a multiple of shorter object length
3: Problem with `mutate()` input `status`.
ℹ longer object length is not a multiple of shorter object length
ℹ Input `status` is `ifelse(...)`.
4: In test_B == reference$reference_B :
longer object length is not a multiple of shorter object length
解决方案
你可以试试这个:
library(dplyr)
ref_df$temp <- 1
test_df %>% left_join(ref_df, by =c("test_A" = "reference_A", "test_B" = "reference_B"))%>% mutate(status = if_else(is.na(temp), "Fail", "Pass")) %>% select(-temp)
sample test_A test_B status
1 1 ABC DEF Pass
2 2 HII KLM Fail
3 3 NOP QRR Fail
4 4 TUV WXY Pass
5 5 TUS WXZ Fail
6 6 KJF KLM Fail
推荐阅读
- reactjs - Reactjs 在我输入时复制表单输入内容
- java - 有办法检测tomcat上的错误吗?
- c++ - 如何使用 openssl 解析具有奇怪 OID 的 x509 证书?
- python - 为什么在 Python 中使用 Robobrowser 进行网络抓取会导致“任务已被破坏,但它正在等待处理!”
- amazon-web-services - 处理传递给 AWS 数据管道中的 SQL 活动的参数
- javascript - ReactJS - ref 不适用于 connect 和 redux-form
- sqlite - 本地 Perl DBI 模块,找不到对象方法“连接”
- javascript - 如何在 Angular 7 中创建函数
- r - R数据框通过列名的第一个字母访问列
- python - Spark 和 Cassandra 在同一个 docker 中