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

Convert matrix to SPSS-like format in R?

所以我正在尝试转换一组矩阵格式的数据,像这样

  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 中执行此操作的最佳方法是什么?它应该是一些简单的文本操作,我尝试制作一个循环来解决它(例如通过提取列,然后再次绑定值)但不知何故循环语法仍然让我逃避!感谢帮助!

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

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

数据生成:

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))