Sample <- data.frame(Sample_Name=c('502B_BCD_0TBC','0102_PER_2TBC', '0302_COR_0TBC', '0500_LN_TGHV'))<br />
我想根据多个条件创建一个“Sample_Type”列:
如果 Sample_Name 包含“B_”或“_BLO”,则 Sample_Type 应为“BLO”
如果 Sample_Name 具有“PER”,则 Sample_Type 应为“PER”
如果 Sample_Name 具有“COR”,则 Sample_Type 应为“COR”
如果 Sample_Name 具有“LN”,则 Sample_Type 应为“LN”
如果 Sample_Name 不是上述任何一个,则 Sample_Type 应为 'OTH'
或者类似图片的东西。
如何实现?
我想你可以用正则表达式来完成这一切:
library(tidyverse)
Sample %>%
mutate(code = str_replace_all(Sample_Name,
c("^(.*)(B_|_BLO_)(.*)$", "^(.*)(_PER_)(.*)$",
"^(.*)(_COR_)(.*)$", "^(.*)(_LN)(.*)$"),
c("BLO", "PER", "COR", "LAN")),
code = ifelse(code %in% c("BLO", "PER", "COR", "LAN"), code, "Other"))
#> Sample_Name code
#> 1 502B_BCD_0TBC BLO
#> 2 0102_PER_2TBC PER
#> 3 0302_COR_0TBC COR
#> 4 0500_LN_TGHV LAN