r - 按类别获取最大值作为 R 中的新列

标签 r dplyr tidyverse

我理解问题的措辞不清楚,但它很简单,希望图像能传达比文字更多的信息。我需要一个新列(图像中的新列),它从列 B 中获取一个值,该列对应于列 N(按组)中的最大值,在这种情况下为 A。

最好是 tidyverse 解决方案,因为我正在传递一个长命令。

   df <-  structure(list(A = c("a", "a", "a", "a", "a", "b", "b", "b"), 
        B = c("b", "c", "d", "e", "f", "c", "d", "e"), N = c(1L, 
        2L, 3L, 4L, 5L, 5L, 4L, 3L), New.Col = c("f", "f", "f", "f", 
        "f", "c", "c", "c")), class = "data.frame", row.names = c(NA, 
    -8L))

Output

最佳答案

使用data.table

library(data.table)
 setDT(df)[, new_col := B[which.max(N)], A]
> df
   A B N New.Col new_col
1: a b 1       f       f
2: a c 2       f       f
3: a d 3       f       f
4: a e 4       f       f
5: a f 5       f       f
6: b c 5       c       c
7: b d 4       c       c
8: b e 3       c       c

关于r - 按类别获取最大值作为 R 中的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68799130/

相关文章:

根据列名称模式 reshape 数据

r - 在文件开头或使用前调用 R 库?

r - 无需循环即可拆分和聚合结果

r - Dplyr 汇总列

r - 在 R 中对嵌套列表进行子集化

r - 当达到空白值时 Purrr 函数编程错误

r - 合并两个数据框,其中根据条件匹配一列

r - 如何在 Ubuntu 上将 R 版本 3.2.2 降级到版本 3.1.1

r - idw为我崩溃了R

r - 应用 group_by 并汇总数据,同时保留所有列的信息