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

如何用R语言提取Excel列首字母大写单词并统计出现频率?

处理Excel表格的祖先信息数据

步骤1:读取数据并按逗号拆分指定列

先加载所需工具包,读取Excel文件后,将目标列的内容按逗号(含后续可选空格)分割为列表格式:

# 加载必要包
library(readxl)
library(stringr)
library(dplyr)

# 读取Excel数据,替换为你的文件路径
data <- read_excel("your_file_path.xlsx")

# 按逗号拆分指定列,生成存储拆分结果的列表列
data$split_desc <- str_split(data$`INITIAL SAMPLE DESCRIPTION`, ",\\s*")

步骤2:编写函数提取首字母大写单词

自定义函数,输入文本内容后提取所有首字母大写的单词,自动过滤空字符串:

extract_cap_words <- function(text) {
  str_extract_all(text, "\\b[A-Z]\\w*") |> 
    unlist() |> 
    Filter(f = \(x) x != "")
}

步骤3:生成每行对应的首字母大写单词列表

提供两种实现方式,按需选择:

方法1:用map批量处理(更简洁)

library(purrr)
data$cap_words_list <- map(data$split_desc, extract_cap_words)

方法2:用for循环实现

# 初始化空列表列
data$cap_words_list <- vector("list", nrow(data))

# 逐行处理拆分后的内容
for (i in 1:nrow(data)) {
  data$cap_words_list[[i]] <- extract_cap_words(data$split_desc[[i]])
}

步骤4:统计每个单词的出现频率

合并所有行的单词列表后统计频率,可转为数据框方便查看排序:

# 合并所有单词到一个向量
all_cap_words <- unlist(data$cap_words_list)

# 统计频率
word_freq <- table(all_cap_words)

# 转为数据框并按频率降序排列(可选)
word_freq_df <- as.data.frame(word_freq) |> 
  rename(单词 = all_cap_words, 频率 = Freq) |> 
  arrange(desc(频率))

print(word_freq_df)

关于你现有函数的说明

你当前使用的str_extract_all(data$INITIAL SAMPLE DESCRIPTION, "\\b[A-Z]\\w*") |> unique()存在两个问题:

  • 未先按逗号拆分数据,直接提取整列内容的单词,会混淆同一单元格内的逗号分隔项
  • unique()会直接去重,丢失单词的重复出现记录,无法统计真实频率

内容的提问来源于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.03 13:54:50