【问题标题】:Convert 3d matrix into a data frame将 3d 矩阵转换为数据框
【发布时间】:2019-03-03 01:11:50
【问题描述】:

我有一个尺寸为 9x3x12 的 3 维矩阵(只是一个示例)。该矩阵值是在不同纬度 (3)、经度 (9) 和时间戳 (12) 记录的温度。

另一方面,我有纬度、经度和时间戳作为向量。像... 纬度 = [13, 15...] lon = [100, 105, 109, 111 .....] 时间戳= [“1992061000”“1992061100”“1992061200”“1992061300”“1992061400”....]

我的目的是创建一个具有 9x3x12 行的数据框,其中每一行对应一个温度值,并有四列,即纬度、经度、时间戳和温度。

任何人都可以提出一种无需太多循环的最佳方法吗?一种方法是在创建一个空数据框后循环遍历向量和矩阵,但我担心它并不是那么理想。

【问题讨论】:

    标签: r matrix vector


    【解决方案1】:

    您可以使用expand.grid() 来组合维度,使用as.vector 来获取数据作为向量。

    注意尺寸顺序!

    dim1 <- c('a', 'b')
    dim2 <- c('a', 'b', 'c')
    dim3 <- c('a', 'b', 'c', 'd')
    
    data <- array(1:24, c(2,3,4), dimnames = list(dim1, dim2, dim3))
    data
    
    cbind(expand.grid(dim1,  dim2, dim3), val = as.vector(data))
    

    【讨论】:

    • 谢谢!这很简单。像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    相关资源
    最近更新 更多