【发布时间】:2022-01-16 07:22:21
【问题描述】:
我想计算每个学生在最近一次缺勤之前的缺勤次数,并将这些计数作为一列添加到数据框中。
Student ID Absent Date Subject
4567 08/30/2018 M
4567 09/22/2019 M
8345 09/01/2019 S
8345 03/30/2019 PE
8345 07/18/2017 M
5601 01/08/2019 SS
这是所需的输出:
Student ID Absent Date Subject Previous Absence
4567 08/30/2018 M 1
4567 09/22/2019 M 1
8345 09/01/2019 S 2
8345 03/30/2019 PE 2
8345 07/18/2017 M 2
5601 01/08/2019 SS 0
然后,我想计算每个学生之前的数学缺勤次数 (M),并将这些计数作为一列添加到数据框中。
Student ID Absent Date Subject Previous Absence
4567 08/30/2018 M 1
4567 09/22/2019 M 1
8345 09/01/2019 S 2
8345 03/30/2019 PE 2
8345 07/18/2017 M 2
5601 01/08/2019 SS 0
想要的输出:
Student ID Absent Date Subject Prior Absence Prior M Absence
4567 08/30/2018 M 1 1
4567 09/22/2019 M 1 1
8345 09/01/2019 S 2 0
8345 03/30/2019 PE 2 0
8345 07/18/2017 M 2 0
5601 01/08/2019 SS 0 0
谢谢!
【问题讨论】:
-
您能澄清一下您想要的输出中的“Prior M Absence”吗?对于学生 ID 8345,数学缺勤发生在 2017 年,在其他缺勤之前,但“Prior M Absence”的值为零。那是因为这个值只反映了过去没有的数学课吗?还是打算将 2017 年 7 月 18 日的日期晚于该学生的其他缺勤日期?
-
@Ben 你好! “Prior M Absence”是仅包含以前数学缺勤的列。所以在这种情况下,它是 0,因为学生 8345 只缺席了 1 次数学,这意味着他们以前从未缺席过任何数学。如果学生 8345 的 3 次缺勤中有 2 次是数学,那么“Prior M Absence”输出将为 1。我希望这是有道理的:)
-
为什么第 2 行中 ID 4567 的前一个不存在 == 1 而不是 2?这不是他第二次缺席吗??
-
你好@Onyambu!它是 1,因为之前只有一个缺席。这是关于学生之前缺勤的次数,而不是总缺勤次数。