Мы можем использовать complete
из tidyr
library(dplyr)
df %>%
mutate(Time = 1) %>%
group_by(ID, Age, Weight) %>%
tidyr::complete(Time = 1:600)
# ID Age Weight Time
# <int> <int> <int> <dbl>
# 1 1 25 150 1
# 2 1 25 150 2
# 3 1 25 150 3
# 4 1 25 150 4
# 5 1 25 150 5
# 6 1 25 150 6
# 7 1 25 150 7
# 8 1 25 150 8
# 9 1 25 150 9
#10 1 25 150 10
# … with 1,790 more rows
Или в базе R, используя split
и transform
do.call(rbind, lapply(split(df, df$ID), function(x) transform(x, Time = 1:600)))