繁体   English   中英

R:如何将数据帧转换为 nxn 矩阵

[英]R: How to convert a dataframe into a nxn matrix

我有四个元素 a、b、c 和 d。 我有一个函数可以计算这四个元素之间的距离并将其写入文件。 该算法只计算唯一的比较(即 a 和 b 而不是 b 和 a)。 以下是文件的结构。

ele1 ele2 dist
a b 2.4
a c 0.5
a d 3.4
b c 0.9
b d 12.5
c d 8.3

我正在尝试将其写入 nxn 矩阵。 我使用了以下代码。

dataFile = read.csv("distanceMeasure.csv")
dataToMatrix <- xtabs(dist ~ ele1 + ele2, data = dataFile )

但是我得到的是;

 b c d
a
b
c

我正在寻找的是

  a b c d
a
b
c
d

我们可以转换为具有指定levels factor ,以便提供所有组合,即使列中缺少某些级别。

Un1 <-  as.character(unique(unlist(dataFile[1:2])))
dataFile[1:2] <- lapply(dataFile[1:2], factor, levels = Un1)
xtabs(dist ~ ele1 + ele2, data = dataFile)
#        ele2
#ele1    a    b    c    d
#   a  0.0  2.4  0.5  3.4
#   b  0.0  0.0  0.9 12.5
#   c  0.0  0.0  0.0  8.3
#   d  0.0  0.0  0.0  0.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM