library(reshape2)
df2 <- melt(df, id.vars = "t")
df2
# t variable value
# 1 0 x 0
# 2 1 x 10
# 3 2 x 20
# 4 3 x 30
# 5 0 y 0
# 6 1 y 9
# 7 2 y 18
# 8 3 y 27
Possibly order rows, and select relevant columns.
df2[order(df2$t), c("t", "value")]
# t value
# 1 0 0
# 5 0 0
# 2 1 10
# 6 1 9
# 3 2 20
# 7 2 18
# 4 3 30
# 8 3 27