首页 > 解决方案 > 如何将数据矩阵转换为相对于坐标的数据框

问题描述

我有坐标向量

x = c(1, 2, 3, 4)
y = c(1, 2, 3)

以及这些位置的观测值矩阵

matrix(round(rnorm(12, 10, 4)), nrow = 4, ncol = 3)

     [,1] [,2] [,3]
[1,]   10    9   11
[2,]   14   11   13
[3,]   15   10    6
[4,]   14   11   17

我想把它转换成一个数据框,这样

x y z
1 1 10
1 2 9
1 3 11
2 1 14
2 2 11
2 3 13

我是 R 新手并试图处理循环,但是对于更大的矩阵和坐标,有什么直接的方法可以做到这一点吗?

标签: r

解决方案


另一种方法是将数据转换为data.frame,进行一些更改并使用 tidyr 的 pivot_long() 函数。请注意,这是一个新功能,因此您可能需要重新安装该库。

library(tidyr)

x = c(1, 2, 3, 4)
y = c(1, 2, 3)

Data <- matrix(round(rnorm(12, 10, 4)), nrow = 4, ncol = 3)
Data <- as.data.frame(Data)
names(Data) <- c("1","2","3")
Data$x = c(1,2,3,4)

pivot_longer(Data, c("1","2","3"), names_to = "y", values_to = "z")

推荐阅读