按A列中的值进行子集化,得到R中B列最大值行对应的C列中的值?使用循环自动执行此操作

问题描述 投票:0回答:1

标题相当令人困惑(抱歉),但我会尝试在这里解释一下。

我有一个数据集,其中有多个人的姓名、他们在一周中的某一天喝的咖啡数量以及一周中相应的一天,分为 3 列

例如 enter image description here

我想要的输出是汤姆、玛丽、约翰喝“最大”咖啡量的“一天”(第 3 列)。即汤姆 - 星期一,玛丽 - 星期五,约翰 - 星期一作为表格。

x=data.frame(read.csv(file.choose()))
tom=subset(x,x$Name=="Tom")
tom.max=max(tom)
tom$Day[which.max(tom$Coffees)]

我可以对一个名称执行此操作,但很难使用循环对所有名称一起执行此操作,因此我不必对更大数据集中的每个名称重复它。我希望输出看起来像这样

enter image description here

如有任何帮助,我们将不胜感激。

r dataframe loops variables logical-operators
1个回答
0
投票

这是一个

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")
)
© www.soinside.com 2019 - 2024. All rights reserved.