问题描述
我有一个看起来像这样的数据框:
I have a data frame that looks like this:
#df
ID DRUG FED AUC0t Tmax Cmax
1 1 0 100 5 20
2 1 1 200 6 25
3 0 1 NA 2 30
4 0 0 150 6 65
等等.我想总结一些关于药物DRUG
和FED STATUS FED
的AUC,Tmax和Cmax的统计数据.我使用dplyr.例如:对于AUC:
Ans so on. I want to summarize some statistics on AUC, Tmax and Cmax by drug DRUG
and FED STATUS FED
. I use dplyr. For example: for the AUC:
CI90lo <- function(x) quantile(x, probs=0.05, na.rm=TRUE)
CI90hi <- function(x) quantile(x, probs=0.95, na.rm=TRUE)
summary <- df %>%
group_by(DRUG,FED) %>%
summarize(mean=mean(AUC0t, na.rm=TRUE),
low = CI90lo(AUC0t),
high= CI90hi(AUC0t),
min=min(AUC0t, na.rm=TRUE),
max=max(AUC0t,na.rm=TRUE),
sd= sd(AUC0t, na.rm=TRUE))
但是,输出未按DRUG和FED分组.它仅给出一行,其中包含所有数据,而没有涉及到DRUG和FED.
However, the output is not grouped by DRUG and FED. It gives only one line containing the statistics of all by not faceted on DRUG and FED.
知道为什么吗?怎样使它做正确的事?
Any idea why? and how can I make it do the right thing?
推荐答案
我相信您在 dplyr 之后加载了 plyr ,这就是为什么您获得了总体摘要的原因而不是分组的摘要.
I believe you've loaded plyr after dplyr, which is why you are getting an overall summary instead of a grouped summary.
这是最后加载 plyr 会发生的情况.
This is what happens with plyr loaded last.
library(dplyr)
library(plyr)
df %>%
group_by(DRUG,FED) %>%
summarize(mean=mean(AUC0t, na.rm=TRUE),
low = CI90lo(AUC0t),
high= CI90hi(AUC0t),
min=min(AUC0t, na.rm=TRUE),
max=max(AUC0t,na.rm=TRUE),
sd= sd(AUC0t, na.rm=TRUE))
mean low high min max sd
1 150 105 195 100 200 50
现在删除 plyr ,然后重试,您将获得分组的摘要.
Now remove plyr and try again and you get the grouped summary.
detach(package:plyr)
df %>%
group_by(DRUG,FED) %>%
summarize(mean=mean(AUC0t, na.rm=TRUE),
low = CI90lo(AUC0t),
high= CI90hi(AUC0t),
min=min(AUC0t, na.rm=TRUE),
max=max(AUC0t,na.rm=TRUE),
sd= sd(AUC0t, na.rm=TRUE))
Source: local data frame [4 x 8]
Groups: DRUG
DRUG FED mean low high min max sd
1 0 0 150 150 150 150 150 NaN
2 0 1 NaN NA NA NA NA NaN
3 1 0 100 100 100 100 100 NaN
4 1 1 200 200 200 200 200 NaN
这篇关于为什么我的dplyr group_by&总结不能正常工作? (与plyr发生名称冲突)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!