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

如何统计数据框列表列中各元素出现次数?现有代码统计结果异常

问题描述

我的数据框结构如下:

V1
c("cheese","bread","sugar","cream","milk","butter")
c("milk","butter","apples","cream","bread")
c("butter","milk","toffee")
c("cream","milk","butter","sugar")

我希望统计每个元素的出现次数,生成包含元素名称和对应次数的结果,期望格式如下:

V2         V3
cheese     1
bread      2
sugar      2
cream      3
milk       4
butter     4
apples     1
toffee     1

我尝试使用以下代码:

counts <- unlist(V1, use.names = FALSE)
counts <- table(counts)

但统计结果错误,存在元素被遗漏的情况,寻求解决方法。

解决方法

问题核心是V1中的元素并非实际的R向量/列表,而是字符串形式的代码文本,直接unlist只会拆分字符串本身的字符,无法解析其中的元素内容。

正确的处理步骤如下:

  1. 解析字符串为真实的R向量:
# 假设你的数据框名为df
parsed_vecs <- lapply(df$V1, function(x) eval(parse(text = x)))
  1. 展开列表并统计元素出现次数:
count_table <- table(unlist(parsed_vecs))
  1. 转换为你期望的两列数据框格式:
result_df <- as.data.frame(count_table, responseName = "V3")
colnames(result_df)[1] <- "V2"

执行后result_df的结构和统计结果会完全符合你的预期,所有元素的出现次数都能被正确统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:03:18