R:将N * M data.frame(或data.table)转换为(N * m)* 3 data.frame

时间:2014-09-15 14:28:33

标签: r format dataframe data.table

我正在使用data.table包从磁盘读取(fread)更大的文件。读取data.table看起来像

   C1,  C2,   C3
R1 0.5, 0.9,  0.1
R2 0.7, 0.1,  0,1
R3 0.2, 0.3,  0,5

但是,对于扫描问题,我希望以下列形式提供它们:

R1, C1, 0.5
R1, C2, 0.9
R1, C3, 0.1
R2, C1, 0.7

那么,有没有一种有效的方法呢?当使用rbind,cbind等时,这需要永远。 我正在阅读的文件有~500k行~100列。

致以最诚挚的问候,

马里奥

1 个答案:

答案 0 :(得分:2)

如果需要,保留线条:

从dataframe开始:

dt = data.frame(c1=c(0.5,0.7,0.2), c2=c(0.9,0.1,0.3), c3=c(0.1,0.1,0.5))
row.names(dt) = c("R1","R2","R3")
melt(as.matrix(dt))

从data.table开始,你不能只获得一行:

dt = data.frame(c1=c(0.5,0.7,0.2), c2=c(0.9,0.1,0.3), c3=c(0.1,0.1,0.5))
melt(as.matrix(dt))