在R中将数据更改为矩阵

时间:2015-09-04 00:23:09

标签: r matrix

我想根据文本文件中的数据在R中创建矩阵。文本文件中的数据如下所示:

ID1, X, 2
ID1, Y, 1
ID1, Z, 2
ID2, X, 1
ID2, Z, 1
ID3, A, 2

我想做的是将其转换为如下所示的矩阵:

ID,  A,  X,  Y,  Z
ID1, NA, 2,  1,  1
ID2, NA, 1,  NA, 1
ID3, 2, NA, NA, NA

我知道如果我有这种格式:

ID1, X
ID1, X
ID1, Y
ID1, Z
ID2, X
ID2, Z
ID3, A
ID3, A

我可以使用table命令获取我正在寻找的内容,但是我已经看到他们没有使用我所拥有的数据格式的解决方案。我无法使用这些解决方案,因为我使用的数据在扩展格式中有超过5亿行,如果它没有压缩成我上面的格式。

如何创建此矩阵以及最有效的方法是什么?压缩我的数据大约是300万行。

2 个答案:

答案 0 :(得分:2)

与tidyr相同

<

答案 1 :(得分:0)

在我发布这个问题后,我发现了这个:

library(reshape)
x<-rbind(c('ID1','X',2),c('ID1','Y',1),c('ID1','Z',1),c('ID2','Y',2),c('ID2','Z',3),c('ID3','A',8))
colnames(x)<-c('ID','Code','Value')
cast(x,ID~Code)

ID    A    X    Y    Z
1 ID1 <NA>    2    1    1
2 ID2 <NA> <NA>    2    3
3 ID3    8 <NA> <NA> <NA>

我还没有在我的大型数据集上尝试过,所以如果有人知道比这更高效的东西,那么看到其他建议会很棒!