我试图这样做:(以下数据框只是为了展示这个想法)
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 新手,所以这对我来说真的很难处理。希望大家能抽出几秒钟的时间发表评论。非常感谢!
最佳答案
我们可以将矩阵
(基于所示的结构)转换为data.frame
,按“a”分组,总结
通过'b'、'c' 的乘积的总和
除以'c'的总和
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")))
关于r - R中如何用一个因子来运算两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50257618/