R:每次在数据中出现n个唯一级别时的分组因子

时间:2012-08-22 18:46:22

标签: r unique grouping levels factors

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

编辑:对数据的一些假设:

  • 级别稍后会在数据中重复
  • 数据后期出现新级别
  • 数据中没有固定的排序

1 个答案:

答案 0 :(得分:4)

在“新”值的cumsum上使用模数除法:

dat$cu5 <- with(dat, 1+ cumsum( c(0, varA[-length(varA)] != varA[-1])) %/% 5)

只有在您希望编号从1开始时才需要添加一个。如果您考虑了它并添加了标签,则不需要。