首页 > 解决方案 > 删除最低数值

问题描述

我已经被这个 dplyr 操作问题困扰了一段时间。

这是我的数据的一个小样本量: dput(test)

structure(list(anon_screen_name = c("40492fd6e817cc25cea942be9eae7c1c5795ffa1", 
"862329793fdbcd666d660d9a9d2e3beceb07a0db", "862329793fdbcd666d660d9a9d2e3beceb07a0db", 
"862329793fdbcd666d660d9a9d2e3beceb07a0db", "862329793fdbcd666d660d9a9d2e3beceb07a0db", 
"862329793fdbcd666d660d9a9d2e3beceb07a0db", "862329793fdbcd666d660d9a9d2e3beceb07a0db", 
"862329793fdbcd666d660d9a9d2e3beceb07a0db", "a9c8719499b9ef73c78e85bada231591d807a821", 
"a9c8719499b9ef73c78e85bada231591d807a821"), resource_display_name = c("Quiz", 
"Quiz", "Quiz", "Quiz", "Quiz", "homework", "homework", "final_exam", 
"Quiz", "Quiz"), grade = c(0L, 0L, 0L, 3L, 1L, 0L, 1L, 1L, 1L, 
2L), max_grade = c(2L, 1L, 0L, 3L, 1L, 10L, 11L, 1L, 1L, 2L), 
    percent_grade = c("0", "0", "\\N", "100", "100", "0", "9.09", 
    "100", "100", "100")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -10L)) 

基本上,对于每个anon_screen_name,我想percent_grade为作业(在 中resource_display_name)降最低。

我开始编写这个启动代码:

test %>% 
     mutate(percent_grade = as.numeric(percent_grade)) %>% 
     group_by(resource_display_name) %>% 
     summarise(min_percent_grade = min(percent_grade, na.rm = T))

但这仅向我显示了最低作业成绩,而没有取出最低作业成绩的行

更新:

percent_grade基本上,借用下面的评论,我想删除与where resource_display_name == 'homework'的最小值相关联的行

标签: rdplyr

解决方案


尝试以下代码:

test %>% 
  mutate(percent_grade = as.numeric(percent_grade)) %>% 
  filter(resource_display_name == 'homework') %>% 
  filter(percent_grade > min(percent_grade, na.rm = T)) -> t1


test %>% 
  mutate(percent_grade = as.numeric(percent_grade)) %>% 
  filter(resource_display_name != 'homework') -> t2

rbind(t1,t2)

推荐阅读