我在学校的课堂上嵌套了学生的数据。
如果我的学生编号从1 ... nth,classnumber从1 ... nth和schoolnumber从1 ... nth开始,我将如何创建一个新列来按顺序计算每个班级中有多少学生。新栏目将出现1,2,3,4,5,1,2,3,4,1,2,3,4,5,6,1,2,1,2,3 ...... nth。在每个新的班级编号中,计数从1开始。
在那一刻我走了很长一段路。我有table(classnr)
给了我每班的学生人数。然后我有mydata$pupilinclass <- c(1:25, 1:7, 1:5, 1:15...
对于大型数据集,这是很多行。
必须有更快捷的方法 - 任何人都可以帮忙吗?
答案 0 :(得分:2)
尝试
mydata$Sequence <- with(mydata, ave(seq_along(studentID), classNumber,
SchoolNumber, FUN=seq_along))
或者更快的选择
library(data.table)
setDT(mydata)[, grp := 1:.N, by = list(ClassNumber, SchoolNumber)]
答案 1 :(得分:2)
使用dplyr
包,您可以执行以下操作:
library(dplyr)
mydata = mydata %>% group_by(ClassNumber, SchoolNumber) %>%
mutate(Sequence=1:n())