簡體   English   中英

使用 dplyr 對選定列進行逐行乘法

[英]Row-wise multiplication of selected columns with dplyr

對從 daraframe 中選擇的所有列執行逐行乘法的方法是什么。 下面的 Mult 列是通過說明要乘以哪些變量來顯式創建的。

如果我選擇了不同的列怎么辦? 什么代碼需要在 mutate 中才能乘以之前選擇的所有列? 注意:所選列的數量並不總是三。

例子:

library(tidyverse)

mtcars %>% 
  select(hp, qsec, disp) %>% 
  mutate(mult = hp * qsec * disp)

一種可能的方式是使用rowProds從包matrixStats

mtcars %>% 
  select(hp, qsec, disp) %>% 
  mutate(mult=rowProds(as.matrix(.)))

但我相信有一種更優雅的方式而不使用其他包。

您可以使用Reduce -

library(dplyr)

mtcars %>% 
  select(hp, qsec, disp) %>% 
  mutate(mult = Reduce(`*`, .))

rowwiseprod -

mtcars %>% 
  select(hp, qsec, disp) %>% 
  rowwise() %>%
  mutate(mult = prod(c_across()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM