Мы можем использовать seq
после группировки по 'Животным'
library(dplyr)
df1 %>%
group_by(Animals) %>%
mutate(Value = seq(first(Value), length.out = n(), by = 7))
# A tibble: 18 x 2
# Groups: Animals [3]
# Animals Value
# <chr> <dbl>
# 1 Dog 13
# 2 Dog 20
# 3 Dog 27
# 4 Dog 34
# 5 Dog 41
# 6 Dog 48
# 7 Dog 55
# 8 Cat 17
# 9 Cat 24
#10 Cat 31
#11 Cat 38
#12 Cat 45
#13 Mouse 100
#14 Mouse 107
#15 Mouse 114
#16 Mouse 121
#17 Mouse 128
#18 Mouse 135
Или другой вариант coalesce
df1 %>%
group_by(Animals) %>%
mutate(Value = coalesce(Value, seq(first(Value), length.out = n(), by = 7L)))
data
df1 <- structure(list(Animals = c("Dog", "Dog", "Dog", "Dog", "Dog",
"Dog", "Dog", "Cat", "Cat", "Cat", "Cat", "Cat", "Mouse", "Mouse",
"Mouse", "Mouse", "Mouse", "Mouse"), Value = c(13L, 20L, 27L,
35L, NA, NA, NA, 17L, 24L, 31L, NA, NA, 100L, 107L, NA, NA, NA,
NA)), class = "data.frame", row.names = c(NA, -18L))