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

如何从Mongolite生成的Dataframe中提取数组元素并单独统计?

解决方案

你的核心问题是MongoDB导出的数组被转成了字符串格式(比如c("Short", "Western")),需要先把这些字符串还原为实际的多元素向量,再拆分展开,最后统计单个元素的频次。

步骤1:将字符串格式的数组转为字符向量列表

使用purrr::map配合eval(parse(text = ...)),把每个单元格的字符串解析成R能识别的字符向量:

library(dplyr)
library(purrr)
library(tidyr)

# 解析字符串为字符向量列表
duplicates_removed <- duplicates_removed %>%
  mutate(genres = map(genres, ~ eval(parse(text = .x))))

步骤2:展开列表列为多行

用tidyr::unnest_longer把每个向量里的元素拆分成单独的行,这样每个genre会单独占一行:

# 展开为长格式
genres_long <- duplicates_removed %>%
  unnest_longer(genres)

步骤3:统计单个genre的频次

现在就可以正常用count统计每个元素的出现次数了:

# 统计并按频次排序
genre_counts <- genres_long %>%
  count(genres, sort = TRUE)

可选:处理解析错误

如果你的数据里存在格式异常的genres字符串(比如无法解析的内容),可以用tryCatch避免报错,把解析失败的内容转为NA:

duplicates_removed <- duplicates_removed %>%
  mutate(genres = map(genres, ~ {
    tryCatch(eval(parse(text = .x)), error = function(e) NA_character_)
  }))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:47:05