jeck猫
基本的R解决方案是将的输出aggregate()与一个merge()步骤结合起来。我发现公式接口aggregate()比标准接口更有用,部分原因是输出中的名称更好,所以我将使用它:该aggregate()步骤是maxs <- aggregate(Score ~ Group, data = dat, FUN = max)这merge()一步很简单merge(maxs, dat)这给了我们想要的输出:R> maxs <- aggregate(Score ~ Group, data = dat, FUN = max)R> merge(maxs, dat) Group Score Info1 1 3 c2 2 4 d当然,您可以将其粘贴为单线(中介步骤更多用于说明):merge(aggregate(Score ~ Group, data = dat, FUN = max), dat)我使用公式接口的主要原因是它返回的数据帧具有正确names的合并步骤。这些是原始数据集中的列的名称dat。我们需要具有aggregate()正确名称的输出,以便merge()知道原始数据帧和聚合数据帧中的哪些列匹配。标准接口给出奇数名称,无论您以哪种方式调用它:R> aggregate(dat$Score, list(dat$Group), max) Group.1 x1 1 32 2 4R> with(dat, aggregate(Score, list(Group), max)) Group.1 x1 1 32 2 4我们可以merge()在这些输出上使用,但是我们需要做更多的工作告诉R哪些列匹配。