Мы можем сгруппировать по «Группе», а затем использовать complete
для расширения строк
library(dplyr)
library(tidyr)
n <- 7
df1 %>%
group_by(Group) %>%
complete(Amount = min(Amount):(min(Amount) + (n -1))) %>%
as.data.frame
data
df1 <- structure(list(Group = c("Dog", "Dog", "Dog", "Cat", "Cat", "Rat",
"Rat", "Rat", "Rat"), Amount = c(1L, 2L, 3L, 3L, 4L, 7L, 8L,
9L, 10L)), class = "data.frame", row.names = c(NA, -9L))