Умножение матриц с тидиверсом - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь умножить две матрицы и хотел бы работать с 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 transpose на 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))

Я ищу, это consumhh [2x4] * zmatrix [, 2: 5 ] '(транспонировать из zmatrix) используя tidyverse.

Спасибо, Ренджер

1 Ответ

0 голосов
/ 17 марта 2020

Я нашел способ:

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

Renger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...