每次有 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/

    10-12 07:03