将数据帧转换为矩阵:两列作为行名和列名

时间:2011-11-10 11:29:19

标签: r graph matrix

在R中,我的数据结构如下:

Ref  Url   Moves
1    1     345
1    2     765
1    3     923
1    4     233
2    1     6
2    2     23
2    3     345
2    4     354
3    1     954
...

我想将其转换为矩阵,然后将其绘制为具有由线宽表示的移动数量的图形。 我需要的是将数据重塑为类似的东西:

    1    2    3 ...
1   345  765  923
2   6    23   345
3   954  ...  ...
...

有人知道如何在R中自动执行此操作吗?如果它不仅可以在第一列和第二列中使用数字而且还可以使用字符串,那将是很好的,因此我可以使用这个字符串作为行和列名称的矩阵。

干杯, P

2 个答案:

答案 0 :(得分:6)

使用acast是一种方法。但我喜欢詹姆斯的方式

library(reshape2)
dd <- read.table(header = T, textConnection("Ref  Url   Moves
 1    1     345
 1    2     765
 1    3     923
 1    4     233
 2    1     6
 2    2     23
 2    3     345
 2    4     354
 3    1     954"))

acast(dd, Ref ~ Url)
Using Moves as value column: use value_var to override.
    1   2   3   4
1 345 765 923 233
2   6  23 345 354
3 954  NA  NA  NA

HTH

答案 1 :(得分:6)

使用Iselzer提供的数据,您可以使用xtabs

xtabs(Moves~Ref+Url,dd)
   Url
Ref   1   2   3   4
  1 345 765 923 233
  2   6  23 345 354
  3 954   0   0   0