说我有数据框
df <- data.frame('A' = c('a','a','a','a','b','b','b','b','b'),
'B' = c('y','y','z','z','y','y','y','z','z'),
'value'=c(1 , 2 , 2 , 3 , 2 , 3 , 1 , 2 , 2))
所以看起来像这样
A B value
a y 1
a y 2
a z 2
a z 3
b y 2
b y 3
b y 1
b z 2
b z 2
我可以使用查询获得 A 和 B 的每个子集的平均值
with(df, aggregate(df, by = list(A, B), FUN = mean))
经过一些操作后
A B value
a y 1.5
b y 2.0
a z 2.5
b z 2.0
有没有办法做到这一点,但只计算每个子集中最高 x 值的平均值。因此,如果我们在此示例中将 x 设为 2,则子集 ay、az 和 bz 的平均值不会改变,因为它们总共只有两个条目(因此顶部 x 条目是子集的整个数据集)。但是 by 有三个条目,因此我们希望返回最高两个值(2 和 3)的平均值,以便输出表看起来像
A B value
a y 1.5
b y 2.5
a z 2.5
b z 2.0