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

如何按DataFrame拆分后的单个单词汇总对应value值?

没问题,这其实是个典型的字符串拆分+分组求和任务,用R里的工具链就能轻松搞定,我给你两种常用的实现方式,选你顺手的来:

方法一:用tidyverse工具链(推荐,简洁易读)

这是现在R数据分析里最常用的方式,借助tidyr的拆分函数和dplyr的分组聚合功能:

# 先安装并加载tidyverse(如果还没安装的话)
install.packages("tidyverse")
library(tidyverse)

# 你的原始数据
df1 <- data.frame(
  word = c("house, garden, flower", "flower, red", "garden, tree, forest", "house, window, door, red"),
  value = c(10,12,20,5),
  stringsAsFactors = FALSE
)

# 核心处理代码
result <- df1 %>%
  # 把逗号加空格分隔的单词拆成独立行,保留对应value
  separate_rows(word, sep = ", ") %>%
  # 按单词分组
  group_by(word) %>%
  # 对每组的value求和
  summarise(value = sum(value)) %>%
  # 取消分组(可选,方便后续操作)
  ungroup()

# 查看结果
print(result)

运行后你会得到符合预期的输出:

# A tibble: 8 × 2
  word   value
  <chr>  <dbl>
1 door       5
2 flower    22
3 forest    20
4 garden    30
5 house     15
6 red       17
7 tree      20
8 window     5

方法二:基础R实现(无需额外安装包)

如果你不想加载第三方包,用基础R的原生函数也能完成:

# 你的原始数据
df1 <- data.frame(
  word = c("house, garden, flower", "flower, red", "garden, tree, forest", "house, window, door, red"),
  value = c(10,12,20,5),
  stringsAsFactors = FALSE
)

# 拆分每个字符串为单词列表
word_list <- strsplit(df1$word, ", ")
# 生成对应每个单词的value向量(重复原value对应次数)
value_vec <- rep(df1$value, sapply(word_list, length))
# 把单词列表展开为向量
words_vec <- unlist(word_list)

# 用aggregate函数分组求和
result_base <- aggregate(value_vec ~ words_vec, FUN = sum)
# 重命名列名
colnames(result_base) <- c("word", "value")

# 查看结果
print(result_base)

关键逻辑说明

两种方法的核心思路完全一致:先把每个单元格里的多个单词拆成独立条目,让每个单词和对应的原始value一一绑定,最后按单词分组求和。tidyverse的写法更直观,代码可读性更高,适合复杂数据处理场景;基础R写法适合不想依赖第三方包的轻量需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:34:12