在计算描述性统计数据时跨多个变量使用 ddply

Using ddply across numerous variables when calculating descriptive statistics

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

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.

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

谢谢。

@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 所称的 "stacking" data.frame。 tidyr 包中可能有一些类似的功能。