我试图计算90多列的多个均值和95%置信区间:
样本数据:
Group| A_pre | A_post | B_pre | B_post
0 20 21 20 23
1 30 10 19 11
2 10 53 30 34
1 22 32 25 20
2 34 40 32 30
0 30 50 NA 40
0 39 40 19 20
1 40 NA 20 20
2 50 10 20 10
0 34 23 30 10
library(dplyr)
library(gmodels)
df <- df %>%
group_by(group) %>%
dplyr::summarize_all(list(~mean(., trim = 0), ~ci(.,)), na.rm=TRUE)
我得到错误Error in UseMethod("ci") : no applicable method for 'ci' applied to an object of class "c('grouped_df', 'tbl_df', 'tbl', 'data.frame')"
我可以使用得到单独的列ci,但这对于90列来说很耗时:
library(rcompanion)
groupwiseMean(x ~ group,
data = df,
conf = 0.95,
digits = 3, na.rm = T)
有没有办法绕过gmodels
错误或其他方法?
3条答案
按热度按时间vxbzzdmp1#
当您使用
%>%
管道时,.
指的是通过管道输入的内容,在本例中是 Dataframe 。对于purrr
样式的lambda表达式,应该使用.x
作为参数。summarize_all()
已经过时了。您可以尝试使用替换across()
:它看起来也像是将
na.rm = TRUE
到summarize_all()
传递给...
参数,但是当您使用带有~
表示法的lambda表达式时,它不会被传递,所以我尝试纠正它。这是未经测试的,没有提供样本数据,但我认为它应该工作,假设您的数据列都是数字。
yqlxgs2m2#
这将工作:我们可以使用自己的ci函数:
j2qf4p5b3#
考虑到您正在查看90列数据中的组,您希望如何实现这一点可能取决于哪种输出格式对您最有用。
冒着引起人们惊呼的风险,我将提出洞穴人的方法。但它很容易理解,输出也更容易排序。
.