【问题标题】:Calculating mean of a column based on grouped values in other columns in a data frame [duplicate]根据数据框中其他列中的分组值计算列的平均值[重复]
【发布时间】:2021-06-07 20:32:58
【问题描述】:

我无法生成值列的平均值。这是一个类似/重复的问题,我 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

我错过了什么?

【问题讨论】:

  • 试试把 dplyr::summarize(mean_value=mean(value)) ?
  • 酷!明确的工作。您为什么不将此作为答案发布?

标签: r


【解决方案1】:

我们可以将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.

【讨论】:

  • 这非常有用。
猜你喜欢
  • 2014-11-04
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 2020-04-09
  • 2018-11-03
  • 1970-01-01
  • 2014-06-26
相关资源
最近更新 更多