如何获得数据框中每个组的 10 个最高值?

Car*_*ola 4 sorting aggregate r

我假设这是一件容易的事情,但我无法解决我的问题。

我有一个包含 9 列的数据框,我想为第一列中给出的每个组排序第 4 列 (LumenLenght) 的最高 3 个值。

我希望能够:a)找到为每个 SampleID(第一列)分隔的第 4 列具有最高值的 10 行 b)平均每个 SampleID 的 10 个值

数据框

我当前的代码 a) 首先根据 SampleID 和 LumenLength 对值进行排序,b) 将每个 SampleID 的最高、第二高和第三高的 LumenLength 值分开。

sorted.v= arrange(sorted.v, desc(SampleId), LumenLength)
maxlength1 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId),  FUN = tail, n = 1)#highest value
maxlength2 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId),  FUN = tail, n = 2)#second highest value
maxlength3 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId),  FUN = tail, n = 3)#3. highest value
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我还没有真正达到我的目标。我也很确定有更好的方法来做到这一点,但我现在卡住了。

akr*_*run 7

即使不使用数据集,我们也可以使用top_nfrom 。dplyrarrange

sorted.v %>%
    group_by(SampleId) %>%
    top_n(10, LumenLength) %>%
    summmarise(MeanLumenArea = mean(LumenLength))
Run Code Online (Sandbox Code Playgroud)