【问题标题】:Match and merge 3 matrices into one matrix of 3 columns将 3 个矩阵匹配并合并为一个 3 列矩阵
【发布时间】:2018-05-03 00:49:29
【问题描述】:

我想将 3 个矩阵(lat、lon 和 obs)合并为一个唯一的矩阵(或 data.frame),其中每个值都与对应的值匹配。

假设我有以下矩阵:

latitude_m

   lat lat lat
lat 3   12  4
lat 5   45  9
lat 12  33  1

longitude_m

   lon lon lon
lon 1   34  3
lon 23   5  1
lon 2    2  9

observations_m

   obs obs obs
obs 45  13   6
obs 22   4   9
obs  2   1  10

如何获得以下信息:

lat lon obs
3    1   45
5   23   22
12   2    2
12  34   13
45   5    4
33   2    1
4    3    6
9    1    9
1    9   10

谢谢

【问题讨论】:

  • data.frame(lat = c(latitude_m), lon=c(longitute_m), obs = obsercations_m)

标签: r matrix merge match


【解决方案1】:

Akruns 解决方案效果很好,但如果有一些信息与每个值的索引相关联,最好将其存储为数组。

set.seed(1)
lon <- matrix(sample(-180:180, 9), 3)
lat <- matrix(sample(-90:90, 9), 3)
obs <- matrix(round(runif(9)*9, 1), 3)

library(abind)
arr <- abind(lon, lat, obs, along=3)

如果你想把它折叠成二维,就像重置dim()一样简单

dim(arr) <- c(9, 3)
arr
#      [,1] [,2] [,3]
# [1,]  -85  -79  3.4
# [2,]  -47  -53  7.0
# [3,]   25  -59  8.4
# [4,]  145   32  1.9
# [5,] -108  -23  5.9
# [6,]  139   45  1.1
# [7,]  155   -3  2.4
# [8,]   53   34  3.5
# [9,]   42   81  0.1

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2014-08-16
    相关资源
    最近更新 更多