我可以使用以下方法汇总我的数据并计算平均值和sd值:
summary <- aspen %>% group_by(year,Spp,CO2) %>% summarise_each(funs(mean,sd))
但是,我也无法计算标准误差。我试过这个没有成功:
summary <- aspen %>% group_by(year,Spp,CO2) %>% summarise_each(funs(mean,sd,se=sd/sqrt(n())))
答案 0 :(得分:15)
你可以做到
library(dplyr)
aspen %>%
group_by(year,Spp,CO2) %>%
summarise_each(funs(mean,sd,se=sd(.)/sqrt(n())))
为了重现性,
data(mtcars)
grpMt <- mtcars %>%
group_by(gear, carb)
grpMt %>%
summarise_each(funs(mean, sd, se=sd(.)/sqrt(n())), hp:drat) %>%
slice(1:2)
# gear carb hp_mean drat_mean hp_sd drat_sd hp_se drat_se
#1 3 1 104.0 3.1800 6.557439 0.4779121 3.785939 0.27592269
#2 3 2 162.5 3.0350 14.433757 0.1862794 7.216878 0.09313968
#3 4 1 72.5 4.0575 13.674794 0.1532699 6.837397 0.07663496
#4 4 2 79.5 4.1625 26.913441 0.5397144 13.456721 0.26985722
#5 5 2 102.0 4.1000 15.556349 0.4666905 11.000000 0.33000000
#6 5 4 264.0 4.2200 NA NA NA NA
与std.error
plotrix
相同
library(plotrix)
grpMt %>%
summarise_each(funs(mean, sd, se=std.error), hp:drat) %>%
slice(1:2)
# gear carb hp_mean drat_mean hp_sd drat_sd hp_se drat_se
#1 3 1 104.0 3.1800 6.557439 0.4779121 3.785939 0.27592269
#2 3 2 162.5 3.0350 14.433757 0.1862794 7.216878 0.09313968
#3 4 1 72.5 4.0575 13.674794 0.1532699 6.837397 0.07663496
#4 4 2 79.5 4.1625 26.913441 0.5397144 13.456721 0.26985722
#5 5 2 102.0 4.1000 15.556349 0.4666905 11.000000 0.33000000
#6 5 4 264.0 4.2200 NA NA NA NA
答案 1 :(得分:2)
您可以使用std.error
包中的plotrix
函数或首先定义您自己的函数,并将该函数名称作为参数传递。
library(plotrix)
summary <- aspen %>% group_by(year,Spp,CO2) %>%
summarise_each(funs(mean,sd,std.error)))
答案 2 :(得分:2)
@akrun的重要附加组件:
如果可能出现缺失值(NA
),则应使用:
summarise_each(funs(mean(., na.rm=T), n = sum(!is.na(.)), se = sd(., na.rm=T)/sqrt(sum(!is.na(.)))), hp:drat)
很遗憾,n()
函数不会删除缺失值,因此除了使用na.rm=T
之外,我们还需要将n()
替换为sum(!is.na(.))
。
关于我自己的一些数据如何出错的插图:
summarise_each(funs(
mean(., na.rm=T), n1=n(), n2=sum(!is.na(.)),
se1=sd(., na.rm=T)/sqrt(n()), se2=sd(., na.rm=T)/sqrt(sum(!is.na(.)))), rating)
n2
和se2
是正确的值。