我有一列包含如下字符串列表
"Plate 2 Day 2 - 220304_Plate-2_Day-2-Well-number-001_Processed_PrintToExcel.xlsx"
井号从 1 到 56,Day 和板块也发生变化——这个数据集中有数千个条目。
我想将井号从 002 - 009、003-017、004-0025、005-33、006-41 等更改。
如果我使用
df_find_replace <- df %>% mutate(col1 = str_replace_all(col1,pattern = "002", replacement = "009"))
当我去换好009到018
df_find_replace <- df %>% mutate(col1 = str_replace_all(col1,pattern = "009", replacement = "018"))
我最终将把 002 的井改成 018。
如果此代码接受了管道,我应该能够避免这种情况吗?当每个人发现一个替换将在原来的 df 上工作?
任何帮助将不胜感激!
回答1
我不明白更改的逻辑(你没有回答@MrFlick 的问题),但这应该让你开始:
library(tidyverse)
df <- tibble(col1 = "Plate 2 Day 2 - 220304_Plate-2_Day-2-Well-number-001_Processed_PrintToExcel.xlsx")
df %>%
extract(col1,
into = c("plate_no", "day_no", "rest"),
regex = "^Plate (\\d+) Day (\\d+) - (.*)") %>%
mutate(plate_no = case_when(plate_no == "2" ~ "009",
plate_no == "9" ~ "018")) %>%
mutate(new_col1 = paste0("Plate ", plate_no, " Day ", day_no, " - ", rest))
使用正则表达式 (regex) 将字符串拆分为多列。然后做你的改变。无论您使用什么逻辑,都在这里执行,它不会覆盖自己。然后,将所有内容再次粘贴在一起。如果您需要帮助编写正则表达式,那么您需要指定您想要的逻辑。