我有一个如下所示的 3D 数组:
# Create two vectors
vector1 <- c(1,2,3,4,5,6)
vector2 <- c(10, 11, 12, 13, 14, 15,16)
# Convert to 3D array
my_array <- array(c(vector1, vector2), dim = c(2,3,2))
print(my_array)
输出在哪里
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 10 12 14
[2,] 11 13 15
我想将其转换为一个整洁的数据集,其中每个值一行,每个值有 4 列:
- 值(value)本身
- 维度 1
- 维度 2
- 维度 3
例如,几行是
Value Dimension1(Row) Dimension2(Column) Dimension3(Width)
1 1 1 1
2 2 1 1
...
15 2 3 2
在基础 R 中或者使用 tidyverse
工具(如 tidyr
)有没有好的方法来做到这一点?
最佳答案
我们可以使用reshape2::melt
library(reshape2)
melt(my_array)
-输出
Var1 Var2 Var3 value
1 1 1 1 1
2 2 1 1 2
3 1 2 1 3
4 2 2 1 4
5 1 3 1 5
6 2 3 1 6
7 1 1 2 10
8 2 1 2 11
9 1 2 2 12
10 2 2 2 13
11 1 3 2 14
12 2 3 2 15
或者在base R
中使用as.data.frame.table
as.data.frame.table(my_array)
或者也可以使用
cbind(which(is.finite(my_array), arr.ind = TRUE), value = c(my_array))
关于r - 将 3D 数组转换为整齐的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68137927/