【问题标题】:Aggregate with trimmed means in R在 R 中使用修剪后的方法进行聚合
【发布时间】:2013-03-17 18:02:21
【问题描述】:

我正在尝试在 R 中聚合这样的数据:

df = data.frame(c("a","a","a","a","a","b","b","b","b","b","c","c","c"))
colnames(df) = "f"
set.seed(10)
df$e = rnorm(13,20,5)

    f   e
1   a   20.09373
2   a   19.07874
3   a   13.14335
4   a   17.00416
5   a   21.47273
6   b   21.94897
7   b   13.95962
8   b   18.18162
9   b   11.86664
10  b   18.71761
11  c   25.50890
12  c   23.77891
13  c   18.80883

我想按列 f 进行聚合,并为每个唯一的 f 提供 e修剪均值 em> type(即产生3行数据)。

我试过了:

df2=data.frame(0) 
df2=aggregate(df$e, by = "f",mean(df$e, trim=0.1))

出现以下错误:

Error in match.fun(FUN) : 
  'mean(df$e, trim = 0.1)' is not a function, character or symbol

在网上尝试了一些搜索,结果是空的。我的实际数据由每个 f 的大约 30 个 e 值组成,所以我不担心 trim=0.1 实际上不会修剪示例中的平均值(因为没有任何意义在上和下 5 个百分位之外)它将使用真实数据,这只是为了让聚合函数按预期工作。谢谢!

【问题讨论】:

  • 仅供参考,如果您运行 mean(df$e, trim = 0.1),您会看到结果不是函数、字符或符号。

标签: r aggregate mean


【解决方案1】:

试试这个

df2=aggregate(e~f,data=df,mean,trim=0.1)
  f        e
1 a 18.15854
2 b 16.93489
3 c 22.69888

在这种情况下用于计算的函数可以只给出其名称,例如mean,并且该函数所需的附加参数设置在逗号之后。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 2022-07-18
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2014-04-28
    • 1970-01-01
    • 2017-10-17
    相关资源
    最近更新 更多