在R中将矩阵转换为类似SPSS的格式?

时间:2015-10-27 11:31:21

标签: r bioinformatics spss

所以我试图转换一组矩阵格式的数据,比如这个

  V1  V2  V3  V4
1 12  32  12  54
2 43  34  23  24
3 43  23  65  54

等。其中1-3是seqID,V1-4是ID

我希望SPSS能够更容易理解这种格式,例如:

ID  seqID  Value
1      1   12
2      1   32
3      1   12
4      1   54
1      2   43

等。

在R中执行此操作的最佳方式是什么?它应该是一些简单的文本操作,我尝试制作一个循环来解决它(例如通过提取列,然后再次绑定值)但不知何故循环语法仍然逃避我!帮助赞赏!

2 个答案:

答案 0 :(得分:5)

欢迎来到SO。你可以使用reshape2包中的融合函数来做到这一点。假设dt是您的矩阵。

dt=as.data.frame(dt)
dt$seqID = 1:nrow(dt)
melt(dt, id = "seqID")

答案 1 :(得分:0)

数据生成:

m <- matrix(c(12, 43, 43, 32, 34, 23, 12, 23, 65, 54, 24, 54), nrow = 3, 
            dimnames = list(c(1:3), c("V1", "V2", "V3", "V4")))
m

处理:

library(tidyr)
library(dplyr)

as.data.frame(m) %>%
  mutate(ID = rownames(m)) %>%
  gather(seqID, Value, -ID) %>%
  mutate(seqID = as.numeric(seqID))