说我有数据帧平均
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
我可以得到的每个子集的均值和使用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条目是子集的整个数据集)。然而,通过有三个条目,所以我们希望回到最高的两个值(2,3),以便输出表看起来像
A B value
a y 1.5
b y 2.5
a z 2.5
b z 2.0
简单而整洁,加上'tail()'用法,尽管'将sort ='递减为'TRUE'将允许使用'head()',这可能会清晰地表示代码的意图(或者可以使用' 1:2]') –