在 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))
所以我正在尝试转换一组矩阵格式的数据,像这样
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))