【问题标题】:Find the Maximum Value with respect to another within two data frames (VLOOKUP which returns Max Value) in R在R中的两个数据帧(返回最大值的VLOOKUP)中找到相对于另一个的最大值
【发布时间】:2022-11-04 00:14:06
【问题描述】:

我试图找到一个类似于 excel 中的 vlookup 但返回最大值和同一行中的其他值的函数。 数据框如下所示:

我正在处理的数据框如下所示:

dput(Book3)
structure(list(Item = c("ABA", "ABB", "ABC", "ABD", "ABE", "ABF"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-6L))

dput(Book4)
structure(list(Item = c("ABA", "ABB", "ABC", "ABD", "ABE", "ABF", 
"ABA", "ABB", "ABC", "ABD", "ABE", "ABF", "ABA", "ABB", "ABC", 
"ABD", "ABE", "ABF"), Max1 = c(12, 68, 27, 17, 74, 76, 78, 93, 
94, 98, 46, 90, 5, 58, 67, 64, 34, 97), Additional1 = c(40, 66, 
100, 33, 66, 19, 8, 70, 21, 93, 48, 34, 44, 89, 74, 20, 0, 47
), Additional2 = c(39, 31, 85, 58, 0, 2, 57, 28, 31, 32, 15, 
22, 93, 41, 57, 81, 95, 46)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -18L))

下面给出了预期的输出:

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    您正在寻找slice_max

    library(dplyr)
    Book4 %>% 
      group_by(Item) %>% 
      slice_max(Max1)
    
    #   Item   Max1 Additional1 Additional2
    # 1 ABA      78           8          57
    # 2 ABB      93          70          28
    # 3 ABC      94          21          31
    # 4 ABD      98          93          32
    # 5 ABE      74          66           0
    # 6 ABF      97          47          46
    

    【讨论】:

      【解决方案2】:

      使用 R 基础 aggregate + max

      > aggregate(.~Item, data = Book4, max)
        Item Max1 Additional1 Additional2
      1  ABA   78          44          93
      2  ABB   93          89          41
      3  ABC   94         100          85
      4  ABD   98          93          81
      5  ABE   74          66          95
      6  ABF   97          47          46
      

      【讨论】:

        【解决方案3】:

        使用base R

        subset(Book4, Max1 == ave(Max1, Item, FUN = max))
        

        -输出

        # A tibble: 6 × 4
          Item   Max1 Additional1 Additional2
          <chr> <dbl>       <dbl>       <dbl>
        1 ABE      74          66           0
        2 ABA      78           8          57
        3 ABB      93          70          28
        4 ABC      94          21          31
        5 ABD      98          93          32
        6 ABF      97          47          46
        

        【讨论】:

          猜你喜欢
          • 2022-01-08
          • 2021-11-04
          • 1970-01-01
          • 2021-03-13
          • 2018-03-12
          • 2015-11-28
          • 1970-01-01
          • 2023-03-19
          • 1970-01-01
          相关资源
          最近更新 更多