我假设这是一件容易的事情,但我无法解决我的问题。
我有一个包含 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
正如你所看到的,我还没有真正达到我的目标。
我也很确定有更好的方法来做到这一点,但我现在卡住了。
最佳答案
我们可以使用 top_n
来自 dplyr
即使没有 arrange
数据集。
sorted.v %>%
group_by(SampleId) %>%
top_n(10, LumenLength) %>%
summmarise(MeanLumenArea = mean(LumenLength))
关于r - 如何获得数据框中每个组的 10 个最高值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35332545/