Без пакетов вы можете объединить два aggregate()
s, один с длиной и один с максимумом.
x1 <- with(dat, aggregate(list(count=id), list(id=id, foo=foo), FUN=length))
x2 <- with(x1, aggregate(list(max_repeat=count), list(id=id), FUN=max))
Выход:
> x2
id max_repeat
1 1 1
2 2 3
3 3 2
Данные:
dat <- structure(list(id = c(1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3), foo = structure(c(1L,
2L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 1L, 1L), .Label = c("a", "b",
"c"), class = "factor")), class = "data.frame", row.names = c(NA,
-11L))