代码之家  ›  专栏  ›  技术社区  ›  JustCallMeGary

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

  •  2
  • JustCallMeGary  · 技术社区  · 6 年前

    我正试图这样做:(下面的数据框只是为了展示这个想法)

          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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   akrun    6 年前

    我们可以将 matrix (基于所示结构)至 data.frame ,按“a”分组, summarise 通过采取 sum “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")))