如何在R中用一个因子操作两个变量

How to operate two variables with one factor in R

我正在尝试这样做:(以下数据框只是为了展示这个想法)

      a     b     c

[1,]  1     1     2

[2,]  1     3     5

[3,]  2     2     4

[4,]  2     1     5

其中'a'是将'b'和'c'分为两类的因素。我想获得 a 的加权平均值(b 作为权重,或者实际上,b/Sum(b) 作为权重)。我找不到以相同因子操作多个变量的函数。

在这个例子中,我想得到两种方法:

a组=1: (1*2+3*5)/(2+5)=17/7

a=2组:(2*4+1*5)/(4+5)=13/9

我是 R 的新手,所以这对我来说真的很难处理。希望你们能抽出几秒钟来发表评论。非常感谢!

我们可以将 matrix(基于显示的结构)转换为 data.frame,按 'a' 分组,summarisesum 'b'、'c' 的乘积除以 'c'

sum
library(dplyr)
m1 %>%
   as.data.frame %>% # if it is a matrix
   group_by(a) %>%
   summarise(new = sum(b*c)/sum(c))
# A tibble: 2 x 2
#       a   new
#   <int> <dbl>
#1     1  2.43
#2     2  1.44

数据

m1 <- structure(c(1L, 1L, 2L, 2L, 1L, 3L, 2L, 1L, 2L, 5L, 4L, 5L), .Dim = c(4L, 
3L), .Dimnames = list(NULL, c("a", "b", "c")))