r - 试图将一些旧的 ifelse 代码转换为 case_when
问题描述
因此,我有一些旧的 ifelse 代码(如下),我正在尝试使用 case_when 重做,但我对此非常缺乏经验。
complete_data$type<-ifelse(grepl("Eneg",complete_data$Sample_code),"Negative",
ifelse(grepl("PCRneg",complete_data$Sample_code),"Negative",
ifelse(grepl("DNApos",complete_data$Sample_code),"DNApositive",
ifelse(grepl("PCRpos",complete_data$Sample_code),"PCRpositive",
ifelse(grepl("Empty",complete_data$Sample_code),"Empty","Sample")))))
我最初的尝试让第一条线工作
complete_data$type <- case_when((grepl("Eneg", complete_data$Sample_code) ~ "Negative"))
但是,到目前为止,我尝试获取其他 ifelse 语句的尝试都失败了。有人有什么建议吗?
任何帮助,将不胜感激
解决方案
您可以使用str_detect
/grepl
进行模式匹配并按case_when
以下方式使用。
library(dplyr)
library(stringr)
complete_data %>%
mutate(type = case_when(str_detect(Sample_code, 'Eneg|PCRneg') ~ 'Negative',
str_detect(Sample_code, 'DNApos') ~ 'DNApositive',
str_detect(Sample_code, 'PCRpos') ~ 'PCRpositive',
str_detect(Sample_code, 'Empty') ~ 'Empty',
TRUE ~ 'Sample')) -> complete_data
推荐阅读
- android - Android Auto Desktop Head Unit (DHU) Hello World 应用程序已启动,但 DHU 中没有可用的启动器图标
- html - react-masonry-component 不在父 div 中居中
- pytorch - 如何在使用 ONNX 推理会话时通过传递“标签”来获得语言建模损失?
- ios - 具有相同基类单元的委托调用的多个控制器中的 DelegateProtocol 问题
- r - 枢轴更长的包机标题
- powerbi - 计算产品销售额大于 0 的月份数
- python - ValueError 与多语言预训练的 Wiki 词向量
- adaptive-cards - 我可以向 Mucrosoft 365 以外的用户发送自适应卡吗?
- java - 限制文档字段和竞争条件 - Firebase Firestore Android
- go - 在其方法中填充一个 nil 结构