标题相当令人困惑(抱歉),但我会尝试在这里解释一下。
我有一个数据集,其中有多个人的姓名、他们在一周中的某一天喝的咖啡数量以及一周中相应的一天,分为 3 列
我想要的输出是汤姆、玛丽、约翰喝“最大”咖啡量的“一天”(第 3 列)。即汤姆 - 星期一,玛丽 - 星期五,约翰 - 星期一作为表格。
x=data.frame(read.csv(file.choose()))
tom=subset(x,x$Name=="Tom")
tom.max=max(tom)
tom$Day[which.max(tom$Coffees)]
我可以对一个名称执行此操作,但很难使用循环对所有名称一起执行此操作,因此我不必对更大数据集中的每个名称重复它。我希望输出看起来像这样
如有任何帮助,我们将不胜感激。
这是一个
dplyr
解决方案:
library(dplyr)
df %>%
slice_max(Coffees, by=Name) %>%
select(-Coffees)
Name Day
1 Tom Monday
2 Mary Friday
3 John Monday
数据:
df <- data.frame(
Name = c("Tom", "Tom", "Mary", "Tom", "John", "Tom", "Mary", "Tom", "John"),
Coffees = c(2, 1, 3, 4, 5, 6, 1, 2, 3),
Day = c("Monday", "Wednesday", "Friday", "Thursday", "Monday", "Monday", "Tuesday", "Friday", "Saturday")
)