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

如何统计R数据框中Org_name与Symbol的关联频次?

解决方案

方法1:使用tidyverse工具链(推荐)

先加载tidyverse包,通过分组计数、补全缺失组合、转宽格式三步实现需求,最后调整列名和数据类型匹配预期结果:

library(tidyverse)

# 原始数据框
df <- data.frame(Org_name = c("A", "B", "C", "D", "A", "D", "C", "B"),
                 Symbol = c("F", "P", "X", "F", "F", "O", "O", "P"))

df1 <- df %>%
  count(Org_name, Symbol, name = "freq") %>%  # 按组织和符号分组统计频次
  complete(Org_name, Symbol, fill = list(freq = 0)) %>%  # 补全所有组织-符号组合,缺失项填0
  pivot_wider(names_from = Symbol, values_from = freq) %>%  # 转换为宽格式
  select(Org_name, F, P, O, X) %>%  # 调整列顺序
  rename(F_freq = F, P_freq = P, O_freq = O, X_freq = X) %>%  # 重命名列
  mutate(across(-Org_name, as.character))  # 将频次列转为字符型

print(df1)

方法2:使用Base R(无需额外包)

利用基础R的table()生成交叉频次表,再转换为数据框并调整格式:

df <- data.frame(Org_name = c("A", "B", "C", "D", "A", "D", "C", "B"),
                 Symbol = c("F", "P", "X", "F", "F", "O", "O", "P"))

# 生成组织-符号的交叉频次表
freq_table <- table(df$Org_name, df$Symbol)

# 转换为数据框并调整格式
df1 <- as.data.frame.matrix(freq_table)
df1$Org_name <- rownames(df1)
df1 <- df1[, c("Org_name", "F", "P", "O", "X")]  # 调整列顺序
names(df1)[-1] <- paste0(names(df1)[-1], "_freq")  # 给频次列加后缀
df1[, -1] <- lapply(df1[, -1], as.character)  # 转为字符型
rownames(df1) <- NULL  # 清除行名

print(df1)

两种方法运行后都会得到你期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:38