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

根据数据帧中其他列的分组值计算列的平均值[重复]

r
  •  0
  • RanonKahn  · 技术社区  · 5 年前

    我无法生成值列的平均值。这是一个类似/重复的问题,我 posted earlier.

    library(dplyr)
    
    df <- data.frame(Dose   = c(1, 1, 1, 1, 1, 1, 10, 10, 10, 10, 10, 10),
                     Route  = c('IV','IV','IV','PO','PO','PO','IV','IV','IV','PO','PO','PO'),
                     Timepoint = c(0.25,0.25,0.25,0.25,0.25,0.25,0.5,0.5,0.5,0.5,0.5,0.5),
                     value =    c(207,181,201,505,180,309,123,122,137,441,335,402))
    
    mean.df <- df %>% aggregate(value~Timepoint + Dose + Route,  FUN = mean)
    
    Error in aggregate.data.frame(., value ~ Timepoint + Dose + Route, FUN = mean) : 
    'by' must be a list
    

    当我尝试这个时:

      mean.df <-  df %>% group_by(Timepoint, Dose, Route) %>% summarize(mean_value=mean(value))
    

    我得到的是这个,而不是一个基于时间点、剂量和路线的平均值表。

      mean_value
      1   261.9167
    

    我错过了什么?

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

    我们可以指定 data 论点作为 .

    library(dplyr)
    df %>% 
         aggregate(value~Timepoint + Dose + Route, data = ., FUN = mean)
    

    summarize 可以从 dplyr plyr 。如果两个包裹都已装载,则有可能 plyr::summarize 蒙面 dplyr::summarize 。因此,我们可以指定包 ::

    df %>% 
      group_by(Timepoint, Dose, Route) %>% 
      dplyr::summarize(mean_value=mean(value), .groups = 'drop')
    

    -输出

    # A tibble: 4 x 4
    #  Timepoint  Dose Route mean_value
    #*     <dbl> <dbl> <chr>      <dbl>
    #1      0.25     1 IV          196.
    #2      0.25     1 PO          331.
    #3      0.5     10 IV          127.
    #4      0.5     10 PO          393.