如何在R [重复]中使用一个因子操作两个变量

问题描述 投票:2回答:1

这个问题在这里已有答案:

我试图这样做:(以下数据框只是为了表明这个想法)

      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的新手,所以这对我来说真的很难处理。希望你们能有几秒钟的时间发表评论。非常感谢!

r group-by r-factor
1个回答
2
投票

我们可以将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

data

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")))
© www.soinside.com 2019 - 2024. All rights reserved.