R - 修改tapply函数中的级别顺序

时间:2013-11-26 01:17:36

标签: r dataframe tapply

我的数据类似于以下

nums      r     a
1 3     210     0
4 6     3891    1
9 8     891     1
1 3     321     1
8 1     32      0
etc     etc     etc

我想计算一些东西,并想知道是否有人可以帮助提供以下代码

  1. 每个a值的平均nums值(例如,上面,a的平均1 30.5),按最高平均值排序a值。tapply我想a会解决这个问题,但我不知道如何处理排序组件。
  2. 每个nums值的平均nums值,按预定的tapply(df$ac, df$nums, mean, orderBy=c("1 3", "4 6", "8 1", etc.))顺序排序。例如,nums之类的东西。您可以假设我的订单涵盖了每个可能的{{1}}值。

1 个答案:

答案 0 :(得分:1)

使用tapply

agg <- with(data, tapply(a, nums, FUN = mean))

然后为1,执行:

sort(agg, decreasing = TRUE)

对于2,请执行:

agg[predetermined.nums]

您还可以使用aggregate

agg <- aggregate(a ~ nums, data, FUN = mean)

然后为1,执行:

agg[order(agg$a, decreasing = TRUE), ]

对于2,请执行:

agg[match(predetermined.nums, agg$nums), ]