Ame*_*mer 38 r shadowing plyr name-collision dplyr
我有一个如下所示的数据框:
#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
Run Code Online (Sandbox Code Playgroud)
答案等等.我想总结药物DRUG和FED状态的AUC,Tmax和Cmax的一些统计数据FED.我用dplyr.例如:对于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))
Run Code Online (Sandbox Code Playgroud)
但是,输出不按DRUG和FED分组.它只给出一行包含DRUG和FED中未分面的统计数据.
知道为什么吗?我怎样才能让它做正确的事情?
aos*_*ith 108
我相信你已经加载plyr后dplyr,这就是为什么你得到一个全面总结,而不是分组汇总.
最后加载plyr会发生这种情况.
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
Run Code Online (Sandbox Code Playgroud)
现在删除plyr并再次尝试,您将获得分组摘要.
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
Run Code Online (Sandbox Code Playgroud)
mma*_*123 19
aosmith答案的一个变种可能会帮助一些人.直接R直接调用dplyr的函数.当一个包装干扰另一个包装时的好技巧.
df %>%
dplyr::group_by(DRUG,FED) %>%
dplyr::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))
Run Code Online (Sandbox Code Playgroud)
小智 6
除了 dplyr 之外,用户还经常使用ggplot及其附带的ggpubr函数。事实上,它是另一个常用的包,与dplyr有一些不兼容。以同样的方式,如上所示,您可以使用dplyr::package,但如果它仍然不起作用,就像我所发生的那样,只需分离库就足够了,
detach("package:ggpubr", unload = TRUE)
df %>%
dplyr::group_by(DRUG,FED) %>%
dplyr::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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51803 次 |
| 最近记录: |