r - 将 3D 数组转换为整齐的数据框?

标签 r arrays

我有一个如下所示的 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/

相关文章:

javascript - 平均查找器始终打印 “0”

r - 如何添加不同长度的向量?

arrays - 如何在 SnapLogic 中将数组项转换为对象

javascript - 如果存在则更新或将新元素添加到对象数组 - javascript + lodash 中的优雅方式

r - sample() 中的别名方法

javascript - 无法从 Key JSON MySQL PHP 获取值

c++ - 基本数组格式的二叉搜索树

r - 传单.extras : measure distance in metres

r - 我如何权衡 stat_smooth 与 ggplot2 中值数的倒数

r - 在 R 中导入文本文件时如何忽略转义的分隔符?