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

如何在R语言中将特定格式的dataframe转换为方阵?

在R中将长格式DataFrame转换为相关方阵

你的需求完全可以用pivot_wider()实现,这正是tidyr包中用于长格式转宽格式的核心函数,以下是具体实现步骤:

方法一:使用tidyr::pivot_wider()

首先确保安装并加载tidyr包(如果未安装,先执行install.packages("tidyr")):

library(tidyr)

# 转换为宽格式
wide_table <- pivot_wider(
  data = demo_table,
  id_cols = query,          # 指定行的标识列
  names_from = reference,   # 指定列名的来源列
  values_from = cor_value   # 指定填充单元格的值列
)

# 将query列设置为行名,匹配目标格式
rownames(wide_table) <- wide_table$query
wide_table$query <- NULL

# 查看结果
wide_table

执行后会得到你期望的方阵结构,输出如下:

Hallo1 Hallo2 Hallo3 Hallo4
Hallo1    100     78     97     87
Hallo2     78    100     89     84
Hallo3     97     89    100     72
Hallo4     87     84     72    100

方法二:Base R 原生实现(无需额外包)

如果不想加载tidyverse系列包,也可以用base R的xtabs()函数直接生成交叉表:

# 生成交叉表
cross_table <- xtabs(cor_value ~ query + reference, data = demo_table)

# 转换为DataFrame格式
cross_table_df <- as.data.frame.matrix(cross_table)

# 查看结果
cross_table_df

这个方法同样能得到完全一致的方阵结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:23:23