【发布时间】:2017-12-14 21:40:14
【问题描述】:
我无法根据以下数据集使用dplyr 准备汇总表:
set.seed(1)
df <- data.frame(rep(sample(c(2012,2016),10, replace = T)),
sample(c('Treat','Control'),10,replace = T),
runif(10,0,1),
runif(10,0,1),
runif(10,0,1))
colnames(df) <- c('Year','Group','V1','V2','V3')
我想通过Year 和Group 的每个组合计算平均值、中位数、标准差并计算观察次数。
我已成功使用此代码获取mean、median 和sd:
summary.table = df %>%
group_by(Year, Group) %>%
summarise_all(funs(n(), sd, median, mean))
但是,我不知道如何在funs() 命令中引入n() 函数。它给了我V1、V2 和V3 的计数。这是非常多余的,因为我只想要样本的大小。我试过介绍
mutate(N = n()) %>%
在group_by() 行之前和之后,但它并没有给我想要的。
有什么帮助吗?
编辑:我的疑问还不够清楚。问题是代码给了我不需要的列,因为V1 的观察次数对我来说已经足够了。
【问题讨论】:
-
您能否在
n之后添加()以使代码可用?像这样:summarise_all(funs(n(),sd,median,mean)) -
检查stackoverflow.com/questions/22801153/… 看看是否有帮助
-
@raymkchow 我已经编辑了这个问题。现在很清楚了。
-
由于您正在计算 group_by 中每个组的数量,因此您不必关心观察的数量是 V1、V2 还是 V3。我会这样做:
... %>% summarise_all(funs(sd,median,mean)) %>% mutate(n = n()) -
它不起作用,n总是n = 2,这是不正确的