当R中有多个唯一ID时,是否有R代码可以从宽转换为长?

我想将以下数据从宽转换为长。

id_1<-c(1,2,2,2)
s02.0<-c(1,1,4,7)
s02.1<-c(2,2,5,8)
s02.2<-c(NA,3,6,NA)
id_2<-c(1,1,2,3)
df1<-data.frame(id_1,s02,id_2)

我希望基于两个唯一ID获得以下输出。

id_1<-c(1,1,1,2,2,2,2,2,2,2,2,2)
id_2<-c(1,1,1,1,1,1,2,2,2,3,3,3)
s02<-c(1,2,NA,1,2,3,4,5,6,7,8,NA)
df2<-data.frame(id_1,id_2,s02)