我有一个数据框,看起来像这样:
#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:
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))
但是,输出没有按药物和FED分组,它只给出一行,其中包含所有未按药物和FED分面的统计信息。
知道为什么吗,我怎么才能让它做正确的事?
6条答案
按热度按时间6xfqseft1#
我相信您在dplyr之后加载了plyr,这就是为什么您得到的是一个整体摘要而不是分组摘要。
这是最后加载plyr时的情况。
现在删除plyr并重试,您将得到分组摘要。
tp5buhyn2#
aosmith的答案的一个变体,可能会帮助一些人。指示R直接调用dplyr的函数。当一个包干扰另一个包时,这是一个好技巧。
bpzcxfmw3#
除了dplyr之外,用户经常使用ggplot和ggpubr函数。事实上,这是另一个与dplyr有一些不兼容的常用包。同样的,如上所示,您可以使用dplyr::package,但如果它一直不工作,就像我遇到的那样,只需分离库就足够了。
hwazgwia4#
或者您可以考虑使用
data.table
8fq7wneg5#
尝试sqldf是最好的方法和简单易学的数据分组。下面是例子,以您的需要。各种数据样本分组sqldf库是非常有帮助的。
egdjgwm86#
我卸载了打包的plyr和dplyr,在dplyr之前安装了plyr。我的group_by仍然会导致重复的值,因为它是以最简单的方式使用的:
其中发现16多次出现在那里
因此,我有义务使用T-SQL而不是R进行分组。