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

