r - 根据数据框中其他列中的分组值计算列的平均值
问题描述
我无法生成值列的平均值。这是我之前发布的一个类似/重复的问题。
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
我错过了什么?
解决方案
我们可以将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.
推荐阅读
- php - 如何“跟踪”哪些表与我的多表、多词搜索查询匹配?
- matlab - MATLAB:识别最大值和最小值并相应地拆分数据
- python - Python statsmodels:回归摘要,如何获取参考虚拟变量的 p 值?
- python - Python-如何绘制非数值时间序列
- react-native - 如何检查 fetch POST 中的主体是否已发送到反应原生的 API?
- php - 将变体价格添加到 Woocommerce 中的可变产品下拉项目名称
- java - 如何在 Cell Factory 中以编程方式选择 ComboBox 值?
- java - jvm在创建非文字大小的数组时如何分配内存
- javascript - 使用nodejs在多个文件中初始化firebase应用程序
- ruby-on-rails - 带有 where 子句的 Rails 表