首页 > 解决方案 > 根据多列中的条件对一列中的数据进行分组 - 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,则应计算完成的学生人数。有人可以指导我吗?

标签: rdplyr

解决方案


一种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

推荐阅读