如何在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
相关产品推荐
相关产品推荐

