【问题标题】:Return max for each column, grouped by ID [duplicate]返回每列的最大值,按 ID 分组 [重复]
【发布时间】:2021-05-31 11:55:41
【问题描述】:

我想获取每个 ID 在每列中的最大值。以吹表为例:

ID <-c("A","A","A","A","A","B","B","C","C","C")
col1 <-c(1,2,3,4,5,1,2,1,2,3)
col2 <-c(2,4,9,8,10,2,4,2,4,6)
df <-data.frame(ID, col1, col2)

我想合并下表,如下所示 - 每个组的最大值。

ID      col1      col2
A       5         10       
B       2         4
C       3         6

由于我将把它应用到一个数据框列表中,每个数据框的列名数量不定,因此我不能具体引用列名,而是应用于除 ID 之外的所有列。

我知道下面的代码可以最大化一个变量,但不能扩展到多个:

require(data.table)
dt <- as.data.table(df)
dt[, .SD[which.max(col1)], by=ID]

非常感谢您的帮助!

【问题讨论】:

标签: r data.table max


【解决方案1】:

总结来说,tidyverse 更灵活,尤其是across

library(dplyr)
df %>%
   group_by(ID) %>%
   summarise(across(everything(), max))

-输出

# A tibble: 3 x 3
#  ID     col1  col2
#* <chr> <dbl> <dbl>
#1 A         5    10
#2 B         2     4
#3 C         3     6

数据

 df <- data.frame(ID, col1, col2)

【讨论】:

    猜你喜欢
    • 2012-05-07
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多