gpt4 book ai didi

r - 如何在 R 中有效地进行查找和替换

转载 作者:行者123 更新时间:2023-12-02 01:30:04 24 4
gpt4 key购买 nike

R,我尝试使用 mutate() 和 str_replace 函数更改特定列中的一些字符串,但令我惊讶的是 5 个字符串中的 3 个发生了更改,而 2 个保持不变。

food_quantity <- food_quantity %>% 
mutate(Food_Group = str_replace(Food_Group, "Live meat animals (1000) 2/", "Live meat animals")) %>%
mutate(Food_Group = str_replace(Food_Group, "Fish and shellfish 3/", "Fish and shellfish")) %>%
mutate(Food_Group = str_replace(Food_Group, "Fruits 4/", "Fruits")) %>%
mutate(Food_Group = str_replace(Food_Group, "Other foods 5/", "Other foods")) %>%
mutate(Food_Group = str_replace(Food_Group, "Beverages (1000 KL) 6/", "Beverages"))

图像显示活肉动物 (1000) 不变,饮料 (1000 KL) 也保持不变,而其他字符串发生变化。

最佳答案

为什么不使用单个正则表达式,因为您要排除的字符串遵循规则,即它们都以 ( 或数字开头:

library(dplyr)
data.frame(Food_group) %>%
mutate(Food_group = sub("\\s(\\(|\\d).*$", "", Food_group))
Food_group
1 Live meat animals
2 Fish and shellfish

如果您更喜欢stringr:

library(dplyr)
library(stringr)
data.frame(Food_group) %>%
mutate(Food_group = str_replace(Food_group, "\\s(\\(|\\d).*$", ""))

数据:

Food_group <- c("Live meat animals (1000) 2/", "Fish and shellfish 3/")

注意:

当您将字符串“Beverages (1000 KL) 6/”输入到 str_replace(或任何其他正则表达式函数)时,它保持不变,因为括号是需要转义的元字符嗯>。所以正确的输入是“Beverages\(1000 KL\) 6/”(带有双反斜杠 n R)

关于r - 如何在 R 中有效地进行查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73538543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com