R语言如何查找dataframe中Action列值差异最大的两个名字
R 实现方案
我们需要找Action列的全局最大值、最小值对应的First Name,二者差值就是该列的最大数值差。
方法1:基础R 实现
# 提取Action列的极值对应姓名 max_name <- data$`First Name`[which.max(data$Action)] min_name <- data$`First Name`[which.min(data$Action)] # 计算最大差值 max_diff <- max(data$Action) - min(data$Action) # 输出结果 cat("差异最大的两个名字为:", max_name, "和", min_name, ",Action差值为:", max_diff)
注:如果存在多个相同的极值,
which.max()/which.min()只会返回第一个匹配的结果。如果需要返回所有极值对应的姓名,可替换为:max_names <- data$`First Name`[data$Action == max(data$Action)] min_names <- data$`First Name`[data$Action == min(data$Action)]
方法2:tidyverse(dplyr)实现
library(dplyr) # 筛选出Action为极值的所有行 extreme_rows <- data %>% filter(Action %in% range(Action)) %>% arrange(Action) %>% select(`First Name`, Action) # 提取结果 name_pair <- extreme_rows$`First Name` max_diff <- diff(range(extreme_rows$Action)) cat("差异最大的两个名字为:", last(name_pair), "和", first(name_pair), ",Action差值为:", max_diff)
使用你提供的示例数据运行后,输出结果为:差异最大的两个名字为:Bianca 和 Roland,Action差值为:4。如果需要保留所有匹配最小值的姓名(示例中Roland和Christoph的Action均为1),extreme_rows会自动包含全部匹配项。
内容的提问来源于stack exchange,提问作者Theresa_S
相关产品推荐
相关产品推荐

