在计算描述性统计信息时,在众多变量中使用ddply

时间:2015-07-20 17:16:53

标签: r statistics dplyr plyr

这是我的数据。它显示了我在三个不同地点发现的鱼的数量。

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.

我的问题是如何在不必堆叠数据帧的情况下使用脚本?

感谢。

1 个答案:

答案 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包中可能存在一些类似的功能。