在R中格式化表格/矩阵

时间:2019-07-11 12:19:04

标签: 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 ...

如果您有建议以与他们相同的类型和样式来获取我的数据,请告诉我,我们将不胜感激!

1 个答案:

答案 0 :(得分:1)

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

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函数根据原始数据创建列联表,该函数将自动返回表对象。因此,也许您应该修复创建矩阵的步骤?