将 r 中每组的列值相乘

Multiply column values per group in r

我有一个数据框如下:

 id     weight     value
231      50         0.6
231      50         0.43
420      30         0.86
420      30         0.12

如何将每个 id 和 weight 的所有值相乘得到以下 table:

id     weight     value
231     50       0.6*0.43
420     30       0.86*0.12

使用 prod() 乘以其参数中的所有值。

library(dplyr)

df %>%
  group_by(id, weight) %>%
  summarise(prod = prod(value))

# # A tibble: 2 x 3
# # Groups:   id [2]
#      id weight  prod
#   <int>  <int> <dbl>
# 1   231     50 0.258
# 2   420     30 0.103

或者基本方式

aggregate(value ~ id + weight, df, prod)

data.table

library(data.table)
setDT(df)[, .(Prod = prod(value)), .(id, weight)]