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

如何在RStudio中提取Excel列内首字母大写的单词

解决方案

你之前用的方法没命中核心需求:

  • str_subset(x, "^[[:upper:]]")是筛选整行文本以大写字母开头的行,不是提取行内的大写单词,完全不对路
  • gsub("\\b[a-z]+\\s+", "", x)只去掉了小写开头的单词和后续空格,但数字、标点、重复的大写单词都没处理,所以没用

用R的stringr包可以轻松解决,步骤如下:

1. 加载依赖包并读取Excel数据

# 先安装需要的包(如果没装过)
install.packages(c("readxl", "stringr"))
library(readxl)
library(stringr)

# 读取Excel文件,替换成你的文件路径
df <- read_excel("your_file.xlsx")
# 假设目标列叫"sample_col",提取该列文本
text_col <- df$sample_col

2. 提取首字母大写的单词并去重

# 从每行提取所有首字母大写的单词,返回列表
capital_words_list <- str_extract_all(text_col, "\\b[[:upper:]][a-z]+\\b")

# 把列表展开为向量,去重后得到唯一的大写单词(这里就是"European")
unique_capital_word <- unique(unlist(capital_words_list))

# 如果要把原列替换成清理后的结果(每行保留唯一的大写单词)
df$cleaned_col <- sapply(capital_words_list, function(words) unique(words)[1])

正则解释

\\b[[:upper:]][a-z]+\\b:

  • \\b:匹配单词边界,确保提取的是完整单词
  • [[:upper:]]:匹配单词开头的大写字母
  • [a-z]+:匹配后续的小写字母(至少1个)
  • \\b:匹配单词结尾的边界

3. 直接清理文本(可选)

如果想直接把每行文本处理成只保留大写单词,也可以用这个写法:

df$cleaned_col <- text_col %>%
  # 去掉数字、标点、小写单词
  str_replace_all("\\d+,?\\d*|,|\\b[a-z]+\\b", "") %>%
  # 去掉多余空格
  str_squish() %>%
  # 去重(因为每行可能重复出现European)
  sapply(function(x) unique(str_split(x, " ")[[1]])) %>%
  # 转成字符向量
  as.character()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:35:02