基于行子集上的逻辑条件来子集数据帧

Doc*_*day 3 r subset logical-operators conditional-statements

我试图想出一个关于followig问题的简单解决方案.这是最小的工作示例:

data <- data.frame(subject = c('Math', 'English', 'French', 'English'),
                   grade = c(1, 3, 5, 4))
Run Code Online (Sandbox Code Playgroud)

我想要一个比较Enlish等级的函数,并返回一个逻辑向量,对于具有最高英语等级的行,其值为TRUE,对于所有其他行,则为FALSE.在这种情况下[1] FALSE FALSE FALSE TRUE.

akr*_*run 5

我们可以得到max每个"主题" 的"成绩",ave并将其与"成绩"进行比较,以获得逻辑索引,并检查"主题"是否也是"英语"

with(data, ave(grade, subject, FUN = max)==grade & subject == "English") 
#[1] FALSE FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)