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

如何保留数据列中前4个单词且保留不足4词的记录?

解决R语言stringr::word函数处理不足4词时返回NA的问题

问题场景

处理数据的Company列时,需要保留每条记录的前4个单词,单词数不足4个的则完整保留原记录,但使用stringr::word(df$Company, 1, 4)时,不足4词的记录会被转为NA,不符合需求。

可行解决方案

方案1:拆分+截取+合并(依赖stringr和purrr)

通过拆分字符串为单词列表,截取前4个(不足4个则取全部)后重新合并:

library(stringr)
library(purrr)

# 处理Company列
df$Company1 <- map_chr(
  str_split(df$Company, "\\s+"),  # 按空格拆分单词
  ~str_c(.[1:min(4, length(.))], collapse = " ")  # 取前4个(或全部)再合并
)

方案2:判断单词数后分支处理(仅依赖stringr)

先统计每条记录的单词数,根据数量决定是截取前4词还是保留原内容:

library(stringr)

# 计算每条记录的单词数(空格数+1)
word_num <- str_count(df$Company, "\\s+") + 1

# 条件赋值
df$Company1 <- ifelse(
  word_num >= 4,
  word(df$Company, 1, 4),  # 单词数≥4时取前4个
  df$Company  # 单词数<4时保留原内容
)

方案验证

用你的样本数据测试:

  • 单词语句ATHENAHEALTH会完整保留
  • 双词语句AMERICAN APPAREL会完整保留
  • 多词语句FAIRFIELD NURSING AND REHABILITATION CENTER,会被截取为FAIRFIELD NURSING AND REHABILITATION

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:13