[R] Multiplying each row of data.frame by a row in another data.frame

Eric Berger er|cjberger @end|ng |rom gm@||@com
Sat Apr 9 10:58:11 CEST 2022

```This looks like homework, which is not permitted on this list. But
giving you the benefit of the doubt, here are two ways to do it

> as.matrix(val_df) * matrix(rep(weights\$value,5),ncol=3,byrow = TRUE)
ABC DEF  ONS
[1,]  10   2  500
[2,]  20   4  500
[3,]  10  20 1000
[4,]  10   4  500
[5,]  10  10  500
> t(apply(as.matrix(val_df),MAR=1,function(v) v * weights\$value))

HTH,
Eric

On Sat, Apr 9, 2022 at 7:57 AM maithili_shiva--- via R-help
<r-help using r-project.org> wrote:
>
> Dear R forum
> weights <- data.frame(id = c("ABC", "DEF",  "ONS"), value = c(1, 2, 5))
> val_df <- data.frame(ABC = c(10, 20, 10, 10, 10), DEF = c(1, 2, 10, 2, 5), ONS = c(100, 100, 200, 100, 100))
>
> > weights
>    id           value1 ABC       12 DEF       23 ONS       5
>
> > val_df
>   ABC DEF ONS1  10   1     1002  20   2     1003  10  10    2004  10   2    1005  10   5    100
> I wish to multilpy each row of data.frame val_df by value column of data.frame weights.
>   ABC    DEF    ONS1  10*1   1*2   100*52  20*1   2*2   100*53  10*1   10*2  200*54  10*1   2*2   100*55  10*1   5*2   100*5
> ie I wish to have output as
> OUTPUT
>   ABC    DEF    ONS1  10    2          5002  20    4         5003  10    20      10004  10    4        5005  10    10     500
>
> O have tried sweep function, even matrix multiplcation etc, but nothing seems to be working.
> Regards
> Maithili
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help