【问题标题】:Multiplying matrices with tidyverse将矩阵与 tidyverse 相乘
【发布时间】:2020-03-17 09:32:51
【问题描述】:

我正在尝试将两个矩阵相乘,并且很想使用 tidyverse。一个矩阵 (hhconsum) [9367x12] 看起来像这样

str(hhconsum)
Classes ‘data.table’ and 'data.frame':  9367 obs. of  12 variables:
 $ C01: num  14.74 1.18 7.13 4.7 2.12 ...
 $ C02: num  2.221 0 1.697 0.292 0 ...

另一个是这样的

> zmatrix
# A tibble: 58 x 13
   s         C01   C02     C03      C04     C05      C06          C07    C08     C09   C10   C11     C12
   <chr>   <dbl> <dbl>   <dbl>    <dbl>   <dbl>    <dbl>        <dbl>  <dbl>   <dbl> <dbl> <dbl>   <dbl>
 1 ADM   0           0 0.00211 0.00587  0.00210 0.000843 0.0865       0      0.171       0     0 0    

我想乘以 hhconsum x zmatrix[,2:13] 的转置。关于如何在 tidyverse 中执行此操作的任何想法?

这里是一个相同格式的小例子

library(data.table)
library(tibble)
consumhh <- data.table(rbind(c(14.74482, 2.221329, 5.297450, 32.147875), c(1.17818, 0.000000, 0.753086,  6.755799)))
colnames(consumhh) <- c("C01","C02", "C03", "C04")
zmatrix <- tibble(s = c("ADM", "AGR"), C01 = c(0.2,0.1), c02 = c(0.3, 0.4), c03 = c(073, 0.1), c04 = c(0.15, 0.14))

我正在寻找的是使用 tidyverse 的 consumhh[2x4]*zmatrix[,2:5]' (zmatrix 的转置)。

谢谢 伦格

【问题讨论】:

  • 我用一个例子更新了这个问题@Ronak:hhconsum x zmatrix [,2:13]' = [9367 x 12] x [12x58] 给出了一个维度为 [9367x58] 的矩阵

标签: r tidyverse


【解决方案1】:

我找到了办法:

zt = t(as.matrix(z[2:5]))
cm= as.matrix(c)
res <- as_tibble(cm %*% zt)
colnames(res) <- z$s

伦格

【讨论】:

    猜你喜欢
    • 2015-01-24
    • 2016-12-11
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多