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

标签 r sorting aggregate

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

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

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

data frame

我当前的代码 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/

相关文章:

r - 如何检查嵌套列表的所有元素是否是 R 中另一个列表的子集

R表函数-如何删除0计数?

algorithm - 及时卖烂苹果

algorithm - 如何根据任意顺序对列表进行排序

sql - 聚合查询避免外部磁盘排序

R 行表示按组(或唯一 ID)在多列上

SQL Statement JOIN 只返回有关联的元素

r - 如何在 POSIX 中提取小时、分钟和秒(忽略日期)

R:xtable 中的对角线列名

java - 我如何在 Java 中更正此 switch case?