【问题标题】:How to transform data from two columns into matrix?如何将数据从两列转换为矩阵?
【发布时间】:2017-02-28 02:44:38
【问题描述】:

我还没有学会如何使用 R。我打算在未来,但这个具体问题需要我更直接的关注​​。

我正在尝试将两列数据导入 Gephi 进行可视化。具体来说,我正在尝试转换:

A x
A y
A z

B x
B y
B w

进入这个:

  x y z w
x 0 2 1 1
y 2 0 1 1
z 1 1 0 0
w 1 1 0 0

之后,我需要取矩阵的顶部三角形,并把它放在这样的格式:

x y 2
x z 1
x w 1
y z 1
y w 1
z w 0

我不知道这些进程中的任何一个是如何调用的,所以我在这里和 Google 上的搜索都是空的。

有人能指点我正确的方向吗?

【问题讨论】:

  • 你的例子不是很清楚,但也许data.frame(table(unstack(df[2:1])))
  • 为什么对角线元素都为零? xxyy 元素不应该都为 1,因为它们出现在 A 列和 B 列中吗?
  • @alistaire 没有用,但我找到了答案。谢谢!
  • @user 这称为共现矩阵。对角线元素为零,因为我在计算它们与组中其他人一起出现的次数,而不是它们自己。

标签: r


【解决方案1】:

找到了。这称为共现矩阵。对角线元素为零,因为我正在计算它们与组中其他人一起出现的次数,而不是它们自己。下面的代码有效:

V <- crossprod(table(dat[1:2]))
diag(V) <- 0
V

Source

我运行下面的代码得到了一个下三角矩阵

V[upper.tri(V)] = NA

然后这以共同对应列结束

library(reshape2)
df <- melt(V, na.rm=TRUE)

Source

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多