每次有 5 个独特的关卡时,我都想要一个新的分组
前任。 varB 是所需的结果
structure(list(varA = structure(c(2L, 2L, 3L, 5L, 4L, 1L, 1L,
2L, 3L, 5L, 4L, 4L, 1L), .Label = c("badger", "cat", "dog", "monkey",
"turtle"), class = "factor"), varB = c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L)), .Names = c("varA", "varB"), class = "data.frame", row.names = c(NA,
-13L))
编辑:关于数据的一些假设:
最佳答案
对"new"值的总和使用模除法:
dat$cu5 <- with(dat, 1+ cumsum( c(0, varA[-length(varA)] != varA[-1])) %/% 5)
仅当您希望编号从 1 开始时才需要添加一个。如果您将其分解并添加标签,则不需要它。
关于R:每次在数据中出现 n 个唯一级别时对因素进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12079478/