将两个数据帧覆盖到一个维度数组中(nrow、ncol、2)

Covering two data frames into one array of dimentionality (nrow, ncol, 2)

提问人:Aleksandra 提问时间:4/15/2023 最后编辑:Aleksandra 更新时间:4/15/2023 访问量:40

问:

我正在构建用于多变量时间序列分类的 keras 模型。我使用的数据在数据帧中按维度分开,因此如果存在 2 变量时间序列,我有 2 个数据帧,每个数据帧具有相同数量的列(时间戳)和行(观测值)。在这种情况下,我的模型应该接受输入(nrow,ncol,2),但是我在将两个数据帧覆盖到这个维度的数组中时遇到了问题。 可以在此处找到示例数据:https://timeseriesclassification.com/description.php?Dataset=Libras

我知道这是一个基本问题,但我找不到任何简单的方法来做到这一点。

例:

dim1 <- data.frame(t1 = c(1:4), t2 = c(2:5), t3 = c(3:6))
dim2 <- data.frame(t1 = c(3:6), t2 = c(4:7), t3 = c(5:8))

因此,预期结果应返回:

dim(result)
> 4 3 2

并成为一个数组。

R 克拉斯

评论

2赞 Jon Spring 4/15/2023
对这个论坛的期望之一是,问题应该包括示例数据(以代码的形式),而不是数据的描述或指向某些数据的链接。您能否包含一些我们可以直接加载的虚假示例数据?这使人们更容易提供帮助,并大大增加了您获得与您的特定用例相关的建议的机会。
0赞 Aleksandra 4/15/2023
我补充一个例子。希望我能正确解释一下,我认为关键信息是它用于keras分类模型。

答:

2赞 SamR 4/15/2023 #1

这应该有效:

d  <- array(
    unlist(c(dim1, dim2)),
    dim = c(4,3,2)
)

# Just to check
dim(d) # [1] 4 3 2
all(d[,,1] == dim1) # TRUE
all(d[,,2] == dim2) # TRUE
1赞 TarJae 4/15/2023 #2

我们可以使用函数:abind

?abind组合多维数组。这是 cbind 和 rbind 的概括。采用向量、矩阵或数组序列,并生成相同或更高维度的单个数组。

library(abind)

# Combine data frames into a single array
result <- abind(dim1, dim2, along = 3)

dim(result)

[1] 4 3 2