【问题标题】:Turning 2d matrix into 3d matrix将 2d 矩阵转换为 3d 矩阵
【发布时间】:2020-06-06 11:29:08
【问题描述】:

我意识到关于这个主题有多个线程,但是没有一个答案对我有用。现在,我有一个包含 6720 行和 3 个变量的二维矩阵。第一个变量是日期,它应该由 112 个切片组成(每天应该代表一个切片)。此外,每个切片应该有 60 行。但是,3D 矩阵中的值应该是以下两个变量,而不是日期。问题是,每当我尝试对其进行转换时,它只会将日期作为值。

final.dataset <- array(data = final.dataset, dim = c(60, 2, 112))

This is what the current dataset looks like instead, the variables mean_flourishing and picture_id should be the values

【问题讨论】:

  • 这不是矩阵,而是数据框。它同时具有日期类型和数字类型,因此它不能是矩阵或数组:它们必须都是一种类型。

标签: r arrays matrix 3d


【解决方案1】:

正如@user2554330 所说,这是data.frame 而不是matrix。您可以将data.frame 按日期拆分,然后将其转换为数组:

DF = data.frame(date = rep(seq.Date(as.Date('2013-03-23'), by = "1 day", length.out = 3), each = 4L),
                Mean_Flourishing = 1:12,
                picture_idx = 1:12 + 12L)

array(unlist(split(DF[-1L], DF[1L])), dim = c(4L, 2L, 3L))

, , 1

     [,1] [,2]
[1,]    1   13
[2,]    2   14
[3,]    3   15
[4,]    4   16

, , 2

     [,1] [,2]
[1,]    5   17
[2,]    6   18
[3,]    7   19
[4,]    8   20

, , 3

     [,1] [,2]
[1,]    9   21
[2,]   10   22
[3,]   11   23
[4,]   12   24

## original look of data.
DF
         date Mean_Flourishing picture_idx
1  2013-03-23                1          13
2  2013-03-23                2          14
3  2013-03-23                3          15
4  2013-03-23                4          16
5  2013-03-24                5          17
6  2013-03-24                6          18
7  2013-03-24                7          19
8  2013-03-24                8          20
9  2013-03-25                9          21
10 2013-03-25               10          22
11 2013-03-25               11          23
12 2013-03-25               12          24

下一次,请在您的问题中包含数据而不是图片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-08
    • 2016-08-25
    • 2011-01-16
    • 2012-05-24
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多