[英]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.