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

如何在R语言的DataFrame中统计逗号分隔列表内的元素频次

问题:统计DataFrame列表列中元素的出现次数

给定如下DataFrame:

#> # A tibble: 4 × 3
#>   family name      items
#>   <chr>  <chr>     <list>
#> 1 Kelly  Mark      book, ring, necklace
#> 2 Kelly  Scott     axe, camera, watch
#> 3 Quin   Tegan     book, camera, watch
#> 4 Quin   Sara      sword, fork, book

需要统计items列中每个元素的出现总数(例如book出现3次,camera出现2次),是否需要将所有item转为新列?

我的尝试

试过使用pivot_longer,但生成的列太多,列表包含数百个值,处理大数据量很麻烦,还没尝试其他方法。


解决方案

不需要将items转为新列,用以下两种方法即可高效处理:

情况1:items是列表类型

使用unnest()展开列表,再用count()统计:

library(tidyverse)

# 假设数据框名为df
df %>%
  unnest(items) %>%
  count(items, name = "count")

情况2:items是逗号分隔的字符串

如果items实际是字符串(而非列表),先拆分再统计:

df %>%
  separate_rows(items, sep = ", ") %>%
  count(items, name = "count")

两种方法都会输出每个元素及其对应的出现次数,适合大数据量场景,不会生成冗余列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:15:40