如何按姓名与分组筛选DataFrame中温度列的最大绝对值数据?
按Name和Group分组筛选tem绝对值最大的记录
原始数据构造
Name <- c("Jon", "Jon", "Maria", "Maria","dan","dan","Jon", "Jon", "Maria", "Maria","dan","dan") tem <- c(-23, -41, 32, 58,30,10,-20,63,-30,-33,55,66) group <- c("max", "min", "max", "min","max","min","max", "min", "max", "min","max","min") var <- c("lan", "lan", "lan", "lan","lan","lan","sea", "sea", "sea", "sea","sea","sea") df <- data.frame(Name, tem,group,var)
解决方法(使用dplyr包)
先确保已安装并加载dplyr包,然后通过分组筛选实现需求:
# 安装dplyr(首次使用时执行) # install.packages("dplyr") library(dplyr) # 分组筛选绝对值最大的记录 result <- df %>% group_by(Name, group) %>% filter(abs(tem) == max(abs(tem))) %>% ungroup() # 输出结果(隐藏行号) print(result, row.names = FALSE)
代码说明
group_by(Name, group):按Name和group两个字段对数据分组filter(abs(tem) == max(abs(tem))):在每个分组内,筛选出tem列绝对值等于该组最大绝对值的行ungroup():取消分组结构,将结果转换为普通数据框
运行结果
Name tem group var Jon -23 max lan Maria 32 max lan Maria 58 min lan Jon 63 min sea dan 55 max sea dan 66 min sea
内容的提问来源于stack exchange,提问作者bic ton
相关产品推荐
相关产品推荐

