r - 根据多列中的条件对一列中的数据进行分组 - dplyr
问题描述
这是我在这里提出的另一个问题的延伸。我有一组学生的以下数据,这些数据指定了在学期的不同日子分配给他们每个人的任务。
df <- data.frame(
Student = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C", "C", "C"),
`Day of School` = c("Day 1", "Day 1", "Day 1", "Day 2", "Day 2", "Day 2", "Field Trip", "Field Trip", "Field Trip", "Day 1", "Day 1", "Day 2", "Day 2", "Day 3", "Day 3", "Day 4", "Day 4", "Day 4", "Field Trip", "Field Trip", "Field Trip", "Field Trip", "Field Trip", "Day 5", "Day 5", "Day 5"),
Task = c("Homework", "Classwork", "Homework", "Classwork", "Homework", "Classwork", "Poster", "Poster", "Poster", "Homework", "Classwork", "Homework", "Classwork", "Homework", "Classwork", "Poster", "Poster", "Poster", "Homework", "Classwork", "Homework", "Classwork", "Homework", "Classwork","Poster", "Poster"),
Status = c("Completed", "Completed", "Completed", "Completed", "Completed", "Completed", "Completed", "Pending", "Not performed", "Completed", "Pending", "Completed", "Completed", "Pending", "Not performed", "Completed", "Pending", "Not performed", "Completed", "Completed", "Completed","Completed", "Completed", "Completed", "Completed", "Completed"), stringsAsFactors = FALSE)
我想将这张表总结如下
如果学生在某一天的所有任务的状态为Completed,则应计算完成的学生人数。有人可以指导我吗?
解决方案
一种dplyr
可能是:
df %>%
group_by(Day.of.School, Student) %>%
summarise(n = all(Status == "Completed")) %>%
group_by(Day.of.School) %>%
summarise(n = sum(n))
Day.of.School n
<chr> <int>
1 Day 1 1
2 Day 2 2
3 Day 3 0
4 Day 4 0
5 Day 5 1
6 Field Trip 1
推荐阅读
- java - 如何覆盖具有泛型类型的方法
- visual-studio-code - 如何修复 Vs 代码中的智能感知?
- python - 如何使用 python 更新书签?
- javascript - 使用 Node.js、MySQL 和 EJS 选择选项下拉列表
- javascript - 如何将 matrix3d 转换为 `rotateX`、`rotateY` 和 `rotateZ` 值?
- javascript - 第一个下拉菜单更改第二个下拉菜单相关项目显示
- python - 从网络摄像头抓取图像的 Python 代码?必须在网络摄像头上手动按下播放
- python-3.x - 为什么 doctest 跳过对导入方法的测试?
- dart - 在 Dart 的扩展中限制泛型类型
- javascript - 制作手机导航栏