r - 删除最低数值
问题描述
我已经被这个 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'的最小值相关联的行
解决方案
尝试以下代码:
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)
推荐阅读
- android - 将适用于 Android TV 的 DayDream(屏幕保护程序)添加到现有的 Android 项目
- python - 如何将 gnuradio-companion xml 文件中的两个参数相乘
- windows - 如何在 anaconda 中使用默认包以外的其他 cudnn 包
- html - 锚点无法使用溢出隐藏 [Microsoft Edge]
- java - Java - 复数矩阵
- ios - 如何使用 Swift 创建日期正则表达式?
- python-3.x - 我想做到这一点,以便数字有多高,它会给我更高的价值。我怎么做?
- python - 使用 numpy 在 python 中重构 K-means 算法
- java - 抛出 EmptyTreeException 不起作用
- jenkins - 如何将现有项目从 CVS 签出到 Jenkins