R 尝试将一些旧的ifelse代码转换为case_

R 尝试将一些旧的ifelse代码转换为case_,r,tidyverse,R,Tidyverse,因此,我有一些旧的ifelse代码(如下),我正在尝试使用case_重新编写,但我对这些代码缺乏经验 complete_data$type<-ifelse(grepl("Eneg",complete_data$Sample_code),"Negative", ifelse(grepl("PCRneg",complete_data$Sample_code),"Negat

因此,我有一些旧的ifelse代码(如下),我正在尝试使用case_重新编写,但我对这些代码缺乏经验

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\u data$type您可以使用
str\u detect
/
grepl
进行模式匹配,并在
时按以下方式使用
case\u

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

您可以使用
str\u detect
/
grepl
进行模式匹配,并在
时按以下方式使用
case\u

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

没有额外的
stringr
包的替代方案是:

libraries("tidyverse")
complete_data <- complete_data %>% mutate(type = case_when(
 grepl("Eneg", Sample_code) | grepl("PCRneg", Sample_code) ~ "Negative",
 grepl("DNApos", Sample_code) ~ "DNApositive"
 grepl("PCRpos", Sample_code) ~ "PCRpositive"
 grepl("Empty", Sample_code) ~ "Empty"
 TRUE ~ "Sample"
))
库(“tidyverse”)
完成数据%mutate(类型=案例(
grepl(“Eneg”,样本代码)| grepl(“PCRneg”,样本代码)~“负数”,
grepl(“DNApos”,示例代码)~“DNApositive”
grepl(“PCRpos”,示例代码)~“PCRpositive”
grepl(“Empty”,示例代码)~“Empty”
真~“样本”
))

没有额外的
stringr
包的替代方案是:

libraries("tidyverse")
complete_data <- complete_data %>% mutate(type = case_when(
 grepl("Eneg", Sample_code) | grepl("PCRneg", Sample_code) ~ "Negative",
 grepl("DNApos", Sample_code) ~ "DNApositive"
 grepl("PCRpos", Sample_code) ~ "PCRpositive"
 grepl("Empty", Sample_code) ~ "Empty"
 TRUE ~ "Sample"
))
库(“tidyverse”)
完成数据%mutate(类型=案例(
grepl(“Eneg”,样本代码)| grepl(“PCRneg”,样本代码)~“负数”,
grepl(“DNApos”,示例代码)~“DNApositive”
grepl(“PCRpos”,示例代码)~“PCRpositive”
grepl(“Empty”,示例代码)~“Empty”
真~“样本”
))

为了让我们能够帮助您,请提供一个。例如,要生成最小数据集,可以使用
head()
subset()
或索引。然后使用
dput()
给我们一些可以立即放入R的东西。另外,请确保你知道该怎么做。有关更多信息,请访问Stack Overflow。非常感谢。为了让我们能够帮助您,请提供一个。例如,要生成最小数据集,可以使用
head()
subset()
或索引。然后使用
dput()
给我们一些可以立即放入R的东西。另外,请确保你知道该怎么做。有关更多信息,请访问Stack Overflow。非常感谢。非常感谢你!非常感谢你!谢谢你的回答!谢谢你的回答!