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

已计算平均值的权重

  •  0
  • Banjo  · 技术社区  · 8 年前

    我有这样的数据:

    category <- c("A", "B", "C", "B", "B", "B", "C")
    mean <- c(5,4,5,4,3,1,5)
    counts <- c(5, 200, 300, 150, 400, 200,250)
    
    df <- data.frame(category, mean, counts)
    

    category 是某种因素, mean 是已计算的平均值。 意思是 通过不同形状的刻度(1-5)和 counts . 我只是计算了一下 意思是 s,而不是计算它的单个值。

    目标是将不同的 意思是 s在不同的方面 类别 s、 像这样:

    library(dplyr)
    df %>% group_by(category) %>% 
      summarise(weighted.mean(mean, counts))
    
    A   5.000000        
    B   2.947368        
    C   5.000000    
    

    问题是,从更高的 计数 喜欢 C (550)然后从较低的计数,如 A (5). 你知道怎么考虑这个吗?

    我的解决方案就是这个。但我不知道它是否有效:

    df %>% mutate(y = mean * counts) %>%
      mutate(category = as.factor(category)) %>%
      group_by(category) %>%
        summarise(X = sum(y)) %>%
      arrange(desc(X))
    
    
    B   2800            
    C   2750            
    A   25  
    
    0 回复  |  直到 8 年前