R语言:按姓名分组批量获取对应最大咖啡量的日期(循环实现)
批量提取每人咖啡饮用最多日期的解决方案
方法1:用dplyr包(高效简洁,适合大数据集)
如果没装过dplyr,先安装加载:
install.packages("dplyr") library(dplyr)
读取数据并处理:
# 读取你的CSV数据 x <- read.csv(file.choose()) # 按姓名分组,筛选出每组咖啡量最大的记录 result <- x %>% group_by(Name) %>% filter(Coffees == max(Coffees)) %>% ungroup() # 输出结果表格 print(result)
注:如果同一人有多天咖啡量同为最大值,上述代码会保留所有对应行。若只需保留一行,替换为
slice_max:
result <- x %>% group_by(Name) %>% slice_max(Coffees, n = 1) %>% ungroup()
方法2:基础R实现(无需额外安装包)
用by()函数分组处理,再合并结果:
x <- read.csv(file.choose()) # 按姓名分组,提取每组咖啡量最大的行 max_records <- by(x, x$Name, function(group) { group[which.max(group$Coffees), ] }) # 将分组结果转为数据框 result <- do.call(rbind, max_records) # 重置行名(可选,让表格更整洁) rownames(result) <- NULL print(result)
示例输出表格
| Name | Coffees | Day |
|---|---|---|
| Tom | 5 | Monday |
| Mary | 4 | Wednesday |
| John | 6 | Friday |
内容的提问来源于stack exchange,提问作者Anurag Mishra
相关产品推荐
相关产品推荐

