这个问题在这里已有答案:
我试图这样做:(以下数据框只是为了表明这个想法)
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',summarise
分组,取'b','c'乘积的sum
除以'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")))