0

我有如下数据

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(例如,上面的平均值a1 30.5,按最高平均值排序a。我tapply想解决这个问题,但我不知道如何处理排序组件。
  2. a每个值的平均值nums,按预定nums顺序排序。例如,类似tapply(df$ac, df$nums, mean, orderBy=c("1 3", "4 6", "8 1", etc.)). 您可以假设我有一个涵盖所有可能nums值的排序。
4

1 回答 1

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), ]
于 2013-11-26T01:34:47.850 回答