【问题标题】:Aggregate/Group_by second minimum value in RR中的聚合/ Group_by第二个最小值
【发布时间】:2018-01-14 06:12:30
【问题描述】:

我使用了dplyr 中的group_by()aggregate() 函数来跨R 中的列进行聚合。对于我当前的问题,我想按个人分组,但要找到一列(数字)的第二低和另一列(年份)的最低。所以,如果我的数据看起来像这样:

Number     Individual     Year     Value
123        M. Smith       2010     234
435        M. Smith       2011     346
435        M. Smith       2012     356
524        M. Smith       2015     432
119        J. Jones       2010     345
119        J. Jones       2012     432
254        J. Jones       2013     453
876        J. Jones       2014     654

我希望它变成:

Number     Individual     Year     Value
435        M. Smith       2011     346
254        J. Jones       2013     453

谢谢。

【问题讨论】:

  • 我不清楚。哪一列的第二低,哪一列的第二低?
  • @RonakShah 抱歉,已编辑以显示此内容。
  • 在我看来,一个仅次于最低,而另一个仅次于最高。可悲的是,我的 R 不足以回答你的问题:-(

标签: r dataframe group-by


【解决方案1】:

我们可以使用dplyr 包。 dt2 是最终输出。思路是过滤掉Number列中的最小值,然后按IndividualNumberYear排列数据框。最后,选择每个组的第一行。

# Load package
library(dplyr)

# Create example data frame
dt <- read.table(text = "Number     Individual     Year     Value
123        'M. Smith'       2010     234
                 435        'M. Smith'       2011     346
                 435        'M. Smith'       2012     356
                 524        'M. Smith'       2015     432
                 119        'J. Jones'       2010     345
                 119        'J. Jones'       2012     432
                 254        'J. Jones'       2013     453
                 876        'J. Jones'       2014     654",
                 header = TRUE, stringsAsFactors = FALSE)

# Process the data
dt2 <- dt %>%
  group_by(Individual) %>%
  filter(Number != min(Number)) %>%
  arrange(Individual, Number, Year) %>%
  slice(1)

【讨论】:

    【解决方案2】:

    我们可以使用dplyr

    library(dplyr)
    df1 %>%
        group_by(Individual) %>%
        arrange(Individual, Number) %>%
        filter(Number != max(Number)) %>%
        slice(which.max(Number))
    # A tibble: 2 x 4
    # Groups:   Individual [2]
    #  Number Individual  Year Value
    #   <int>      <chr> <int> <int>
    #1    254   J. Jones  2013   453
    #2    435   M. Smith  2011   346
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-13
      • 2017-08-31
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      相关资源
      最近更新 更多