从R中的长表创建对称矩阵

MENGYING NI

这是我的资料

df <- data.frame (Var1  <- c("a", "b", "c","d","e","b","c","d","e","c","d","e","d","e","e"),
                  Var2 <- c("a","a","a","a","a","b","b","b","b","c","c","c","d","d","e")
                  pre <- c(1,2,3,4,5,1,6,7,8,1,9,10,1,11,1) )

我想使用Var1和Var2函数作为行名和列名来构建对称矩阵,并且矩阵值是r中“ pre”中的对应数字,如下所示:

  a b c d e 
a 1 2 3 4 5
b 2 1 6 7 8 
c 3 6 1 9 10
d 4 7 9 1 11
e 5 8 10 11 1

这似乎是一个简单的问题,但是我在Google上搜索了很多帖子,但尚未解决,所以我来这里问,谢谢!

Mengying

罗纳克·沙

您可以先获取宽格式的数据。

library(dplyr)
library(tidyr)

mat <- df %>%
  pivot_wider(names_from = Var2, values_from = pre, values_fill = 0) %>%
  column_to_rownames('Var1') %>%
  as.matrix()

mat
#  a b  c  d e
#a 1 0  0  0 0
#b 2 1  0  0 0
#c 3 6  1  0 0
#d 4 7  9  1 0
#e 5 8 10 11 1

由于具有对称矩阵,因此可以将下三角矩阵复制到上三角。

mat[upper.tri(mat)] <- t(mat)[upper.tri(mat)]
mat

#  a b  c  d  e
#a 1 2  3  4  5
#b 2 1  6  7  8
#c 3 6  1  9 10
#d 4 7  9  1 11
#e 5 8 10 11  1

数据

df <- data.frame (Var1  = c("a", "b", "c","d","e","b","c","d","e","c","d","e","d","e","e"),
                  Var2 = c("a","a","a","a","a","b","b","b","b","c","c","c","d","d","e"),
                  pre = c(1,2,3,4,5,1,6,7,8,1,9,10,1,11,1) )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中创建对称矩阵

来自分类Dev

在R中创建对称频率表

来自分类Dev

使矩阵关于R中的行和列名称对称

来自分类Dev

使矩阵关于R中的行和列名称对称

来自分类Dev

用R计算矩阵中对称数据的平均值

来自分类Dev

从nxm矩阵转换为R中的长矩阵

来自分类Dev

R从表中创建一个出现矩阵

来自分类Dev

在 R 上构造对称矩阵

来自分类Dev

单列矩阵及其转置以在python,numpy scipy中创建对称矩阵

来自分类Dev

C++ 中的对称矩阵

来自分类Dev

从R中的较小矩阵创建较大的矩阵

来自分类Dev

根据向量的圆形移位创建对称矩阵

来自分类Dev

如何创建对称的零和一矩阵

来自分类Dev

在R中创建特殊矩阵

来自分类Dev

在R中创建大型矩阵

来自分类Dev

从R中的向量创建矩阵

来自分类Dev

在R中创建身份矩阵

来自分类Dev

无法在R中创建矩阵

来自分类Dev

在R中创建大型矩阵

来自分类Dev

在R中创建特殊矩阵

来自分类Dev

在R中创建样本矩阵

来自分类Dev

如何基于另一个对称数据帧在 R 中创建对称数据帧

来自分类Dev

R /根据下三角元素的向量创建对称矩阵

来自分类Dev

R中的大型矩阵:尚不支持长向量

来自分类Dev

R中的大型矩阵:尚不支持长向量

来自分类Dev

R在对称矩阵上应用函数

来自分类Dev

使矩阵对称

来自分类Dev

在Matlab中创建和更新表或矩阵

来自分类Dev

从python中的矩阵创建邻接表图