首页 > 解决方案 > R中的格式化表/矩阵

问题描述

我正在尝试使用他们使用的表采用某种格式的包,我对 R 非常陌生,不知道如何以相同格式获取我的数据才能使用该包。他们的桌子是这样的:

     Recipient
Actor  1 10 11 12  2  3  4  5  6  7  8  9
   1   0  0  0  1  3  1  1  2  3  0  2  6
   10  1  0  0  1  0  0  0  0  0  0  0  0
   11 13  5  0  5  3  8  0  1  3  2  2  9
   12  0  0  2  0  1  1  1  3  1  1  3  0
   2   0  0  2  0  0  1  0  0  0  2  2  1
   3   9  9  0  5 16  0  2  8 21 45 13  6
   4  21 28 64 22 40 79  0 16 53 76 43 38
   5   2  0  0  0  0  0  1  0  3  0  0  1
   6  11 22  4 21 13  9  2  3  0  4 39  8
   7   5 32 11  9 16  1  0  4 33  0 17 22
   8   4  0  2  0  1 11  0  0  0  1  0  1
   9   0  0  3  1  0  0  1  0  0  0  0  0

我现在在哪里:

  X0 X1 X2 X3 X4 X5
0  0  2  3  3  0  0
1  1  0  4  2  0  0
2  0  0  0  0  0  0
3  0  2  2  0  1  0
4  0  0  3  2  0  2
5  0  0  3  3  1  0

我想将收件人和演员添加到我的,并将行名和列名更改为 1,...,6。

我的数据也列在我的工作区中的数据下,上面写着:

'num' [1:6,1:6] 0 1 ...

而工作区中的示例数据在值中显示为:

'table' num [1:12,1:12] 0 1 13 ...

如果您有建议让我的数据与他们的数据类型和样式相同,请告诉我,非常感谢所有帮助!

标签: r

解决方案


好的,所以你有一个像这样的矩阵:

m <- matrix(c(1:9), 3)
rownames(m) <- 0:2
colnames(m) <- paste0("X", 0:2)
#  X0 X1 X2
#0  1  4  7
#1  2  5  8
#2  3  6  9

首先,您需要删除 X 并将其变成表格:

colnames(m) <- sub("X", "", colnames(m))
m <- as.table(m)
#  0 1 2
#0 1 4 7
#1 2 5 8
#2 3 6 9

然后您可以设置维度名称:

names(dimnames(m)) <- c("Actor", "Recipient")
#     Recipient
#Actor 0 1 2
#    0 1 4 7
#    1 2 5 8
#    2 3 6 9

但是,通常您会使用该函数从原始数据创建列联表,该table函数会自动返回一个表对象。那么,也许您应该修复创建矩阵的步骤?


推荐阅读