2016-10-30 3 views
2

В моей кадре данных есть все числовые столбцы (например, mtcars). Как создать новый столбец, который показывает произведение всех столбцов? Моя попытка:R: умножить все столбцы в dataframe

library(tidyverse) 
mtcars %>% mutate(product=prod(mpg:carb)) 

дает неправильный продукт

mpg cyl disp hp drat wt qsec vs am gear carb  product 
1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4  8.515157e+18 
2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4  8.515157e+18 
... 
+2

Я бы, наверное, сделал mtcars%>% mutate (prod = apply (., 1, prod)) ', честно – alistaire

+0

не так быстро, как решение @ akrun с уменьшением, но работает – Irakli

+0

Честно говоря, это своего рода странная операция для data.frame. Есть хороший шанс, что вы должны переформатировать в длинную форму или просто использовать вместо них матрицы. – alistaire

ответ

1

Мы можем использовать Reduce

mtcars %>% 
    mutate(Prod = Reduce(`*`, .)) 

Или используйте do

mtcars %>% 
    rowwise() %>% 
    do(data.frame(., Prod = prod(unlist(.)))) 
+0

Это не работает с именами столбцов, но –

+0

@OttToomet Вопрос OP: 'R: умножить все столбцы в dataframe' – akrun

Смежные вопросы