这是我的数据。它显示了我在三个不同地点发现的鱼的数量。
Selidor.Bay Enlades.Bay Cumphrey.Bay
1 39 29 187
2 70 370 50
3 13 44 52
4 0 65 20
5 43 110 220
6 0 30 266
我想要做的是创建一个脚本来计算每个站点的基本统计信息。
如果我通过堆叠重新排列数据。我:
values site
1 29 Selidor.Bay
2 370 Selidor.Bay
3 44 Selidor.Bay
4 65 Enlades.Bay
我能够使用以下内容:
data <- ddply(df, c("site"), summarise,
N = length(values),
mean = mean(values),
sd = sd(values),
se = sd / sqrt(N),
sum = sum(values)
)
data.
我的问题是如何在不必堆叠数据帧的情况下使用脚本?
感谢。
答案 0 :(得分:2)
@docendodiscimus的评论略有变化:
library(reshape2)
library(dplyr)
DF %>%
melt(variable.name="site") %>%
group_by(site) %>%
summarise_each(funs( n(), mean, sd, se=sd(.)/sqrt(n()), sum ), value)
# site n mean sd se sum
# 1 Selidor.Bay 6 27.5 27.93385 11.40395 165
# 2 Enlades.Bay 6 108.0 131.84688 53.82626 648
# 3 Cumphrey.Bay 6 132.5 104.29909 42.57992 795
melt
执行OP所谓的“堆叠”data.frame。 tidyr
包中可能存在一些类似的功能。