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

R语言如何统计嵌套dataframe中各资源项的出现次数

R嵌套dataframe资源项频次统计方案

场景说明

使用R开展数据处理时,常遇到嵌套式dataframe结构:外层dataframe的内部元素本身也是独立dataframe,属于多维度数据结构,且每个子dataframe包含的条目数量不固定,无法直接用常规计数函数统计。

需求目标

统计数据中各资源项的总出现频次,例如Xbox One, NM2、PS4, NM2这类格式的资源条目出现次数。

实现方法

方法1:tidyverse方案(代码简洁易读,适合R基础薄弱用户)

如果未安装tidyverse套件,先运行安装命令:

install.packages("tidyverse")

核心处理代码:

library(tidyverse)

# 替换nested_df为你实际存储嵌套数据的对象名
count_result <- nested_df %>%
  # 展开嵌套的子dataframe,拉平为普通二维表结构
  # 如果只有某一列是存子dataframe的列表列,把everything()替换为对应列名即可
  unnest(cols = everything()) %>%
  # 如果资源项是由两个字段拼接而成(比如平台+版本),替换成你实际的列名
  # 如果资源项本身是单独字段,跳过这步unite逻辑即可
  unite("resource_name", platform_col, version_col, sep = ", ", remove = F) %>%
  # 分组计数,结果按频次从高到低排序
  count(resource_name, name = "freq", sort = T)

运行后count_result就是各资源项的频次统计结果,直接查看即可。

方法2:Base R原生方案(无需安装第三方包)

不需要依赖外部包,用R自带函数即可完成处理:

# 把所有子dataframe按行合并为一个完整的普通dataframe
flat_data <- do.call(rbind, nested_df)

# 情况1:资源项已经是单独存在的字段,直接计数
count_result <- as.data.frame(table(flat_data$resource_col), stringsAsFactors = F)
colnames(count_result) <- c("resource_name", "freq")

# 情况2:资源项需要由两个字段拼接生成,先运行下面的拼接代码再计数
flat_data$resource_name <- paste(flat_data$platform_col, flat_data$version_col, sep = ", ")
count_result <- as.data.frame(table(flat_data$resource_name), stringsAsFactors = F)
colnames(count_result) <- c("resource_name", "freq")

# 结果按频次降序排列
count_result <- count_result[order(-count_result$freq), ]

注意事项

  • 代码中带_col后缀的占位符,需要替换为你自己数据里实际的列名再运行
  • 如果嵌套层级超过2层,多运行一次unnest(tidyverse方案)或者多做一次rbind合并(base R方案)即可拉平数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:12:23