【问题标题】:Using ddply across numerous variables when calculating descriptive statistics计算描述性统计时跨多个变量使用 ddply
【发布时间】:2015-07-20 17:16:53
【问题描述】:

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

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.

我的问题是如何使用脚本而不必堆叠我的数据框?

谢谢。

【问题讨论】:

  • 试试library(dplyr); summarise_each(df, funs(N = n(), mean, sd, sum))
  • 如果你愿意离开ddply(在你的标题中提到)会更简单,如docendo的评论所示。

标签: r statistics dplyr plyr


【解决方案1】:

@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 包中可能有一些类似的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    相关资源
    最近更新 更多