r - 数字查找和替换问题

我有一列包含如下字符串列表

"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) 将字符串拆分为多列。然后做你的改变。无论您使用什么逻辑,都在这里执行,它不会覆盖自己。然后,将所有内容再次粘贴在一起。如果您需要帮助编写正则表达式,那么您需要指定您想要的逻辑。

相似文章

最新文章