【问题标题】:How to select rows where a condition is met in R? [duplicate]如何选择在R中满足条件的行? [复制]
【发布时间】:2026-02-11 01:35:01
【问题描述】:

我对 R 很陌生,并且在 R 语言的条件下工作。 我有一个看起来像这样的数据框:

ID   nb
11    1
11    2
11    3
24    1
24    2
32    1
41    1
41    2

我想为每个不同的 ID 对其中 nb = max(nb) 的行进行子集化,然后得到这个新的数据框:

ID   nb
11    3
24    2
32    1
41    2

如果可能的话,有没有办法在没有循环的情况下做到这一点?

感谢您的帮助

【问题讨论】:

    标签: r select conditional-statements subset


    【解决方案1】:

    查看tidyverse 系列函数,它可以让您非常轻松地做到这一点!熟悉它们是非常有用的功能。 (特别是,如果您了解核心 dplyr 函数,您就可以完成您在 R 中需要做的大部分事情。)

    data %>%
      group_by(ID) %>%
      filter(nb == max(nb)) %>%
      ungroup()
    

    【讨论】:

      【解决方案2】:

      您可以将aggregatemaxmerge 一起使用:

      merge(x, aggregate(nb~ID, x, max))
      #  ID nb
      #1 11  3
      #2 24  2
      #3 32  1
      #4 41  2
      

      【讨论】:

        最近更新 更多