假设我有以下类型的数据:
df <- data.frame(student = c("S1", "S2", "S3", "S4", "S5", "S2", "S6", "S1", "S7", "S8"),
factor = c("A", "A", "A", "A", "A", "B", "B", "C", "C", "D"),
year = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2),
count1 = c(0, 1, 0, 0, 0, 1, 0, 0, 0, 0),
count2 = c(1, 0, 0, 0, 0, 0, 0, 1, 0, 0))
我需要一种比典型的 apply() 函数更有效的方法来分析给定年份中学生和班级的两列。当学生在给定年份保持相同的因子水平时,该函数返回计数为零。当学生在给定年份中处于多个因子级别时,计数会针对该学生在单独因子级别中的每个实例更新 i+1。
我想要一个单独的计数/功能来分析多年来数据集中的学生。例如,跨年保持相同因子水平的学生获得的计数为零。如果发现学生在不同年份具有不同的因子水平,则每个实例的计数都会更新 i+1。
有超过 10k 的观察结果,所以我对 *apply 的尝试是徒劳的。也就是说,我已经能够计算每个学生和因素的唯一实例,但只有第一个唯一实例,而不是学生(唯一 ID)和因素的所有唯一实例。个人可以在几年内或跨年重复。
理想的输出如下:
Student1,Factor.Count(年内),Factor.Count(年间)