R CODE:创建一个新列,按顺序列出另一个分组变量中的值的数量

时间:2015-04-17 14:54:57

标签: r

我在学校的课堂上嵌套了学生的数据。

如果我的学生编号从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...对于大型数据集,这是很多行。

必须有更快捷的方法 - 任何人都可以帮忙吗?

2 个答案:

答案 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())