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

如何在R中为数据框观测值条件性移除单词结尾字符(如ed、s)

处理词频统计中的单词后缀移除需求

看起来你已经完成了初步的文本清洗,现在需要从现有单词中移除结尾的s和ed后缀,而不是删除整个观测值——这个需求其实属于精准词干化的范畴,用tidyverse里的stringr包就能轻松实现。

解决方案代码

我们可以用str_replace()函数结合正则表达式,精准匹配并替换单词结尾的目标后缀:

library(tidyverse)

# 对WORD列进行后缀替换
df_cleaned <- df %>%
  # 移除单词结尾的"ed"
  mutate(WORD = str_replace(WORD, "\\bed$", "")) %>%
  # 移除单词结尾的"s"
  mutate(WORD = str_replace(WORD, "\\bs$", ""))

# 查看处理后的结果
print(df_cleaned)

代码解释

  • \\bed$:正则表达式中,\\b表示单词边界,ed$表示字符串结尾的"ed",这样只会匹配单词末尾的"ed",不会误替换单词中间的字符(比如"Bedroom"里的"ed"就不会被处理)。
  • \\bs$:同理,匹配单词末尾的"s",像"Happy""Apple"这类不以"s"结尾的单词完全不受影响。

处理后的结果

运行上述代码后,你会得到期望的数据框:

WORDN
Happy7
Apple8
Coworker16
Customer9
Kick11
Turtle8

扩展说明

如果之后需要处理更多后缀(比如"ing""ly"),只需要继续添加mutate(str_replace(...))步骤即可。要是需要更通用的词干化处理,也可以试试SnowballC包的wordStem()函数,不过针对你当前的特定需求,上面的精准替换方案更直接。

内容的提问来源于stack exchange,提问作者DavidLindhagen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:35:37