You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中删除字符变量指定内容以完成鸡尾酒配料数据清洗?

你可以用正则表达式一次性匹配所有需要删除的内容,单条命令就能完成清洗,不需要分步操作。

首先针对你给出的示例向量测试效果:

library(stringr)

ingredients <- c("1 1/2 oz Plymouth gin", "1 oz egg white", "3/4 oz lemon juice", "2 oz rye (50% abv)", "2 oz white rum (40% abv)", "3/4 oz lime juice", "3/4 oz honey syrup") 

# 清洗逻辑:匹配两类要删除的内容,用|分隔
cleaned_ingredients <- str_remove(ingredients, "^.*?(oz|dashes)\\s*|\\s*\\(.*$")

运行后得到的结果就是你需要的纯配料名:

[1] "Plymouth gin" "egg white"    "lemon juice"  "rye"          "white rum"    "lime juice"   "honey syrup" 

正则逻辑说明

  • ^.*?(oz|dashes)\\s*:匹配从字符串开头到oz或dashes的所有内容,同时去掉这两个单位后面跟着的空格
  • |:逻辑或,匹配前后任意一种规则的内容
  • \\s*\\(.*$:匹配括号前的空格、括号以及括号里直到字符串末尾的所有内容

如果要在dplyr管道中处理数据框的多列配料(比如ingredient1、ingredient2...),可以用across批量操作,不需要每列单独写mutate:

library(dplyr)
library(stringr)

df <- df %>%
  mutate(across(starts_with("ingredient"), ~ str_remove(.x, "^.*?(oz|dashes)\\s*|\\s*\\(.*$")))

内容的提问来源于stack exchange,提问作者Adél Jenifer Kovács

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:15:04