如何在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' 分组,summarise
取 sum
'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")))
我正在尝试这样做:(以下数据框只是为了展示这个想法)
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
取 sum
'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")))