你可以使用expand.grid:
expand.grid(
dt = seq(as.POSIXct("2008-01-01 00:00:00", 'UTC'),
as.POSIXct("2008-01-01 03:00:00", 'UTC'), 'hour'),
depth = c(2, 40, 45, 100),
var1 = 0.01
) -> result
result
# dt depth var1
#1 2008-01-01 00:00:00 2 0.01
#2 2008-01-01 01:00:00 2 0.01
#3 2008-01-01 02:00:00 2 0.01
#4 2008-01-01 03:00:00 2 0.01
#5 2008-01-01 00:00:00 40 0.01
#6 2008-01-01 01:00:00 40 0.01
#7 2008-01-01 02:00:00 40 0.01
#8 2008-01-01 03:00:00 40 0.01
#9 2008-01-01 00:00:00 45 0.01
#10 2008-01-01 01:00:00 45 0.01
#11 2008-01-01 02:00:00 45 0.01
#12 2008-01-01 03:00:00 45 0.01
#13 2008-01-01 00:00:00 100 0.01
#14 2008-01-01 01:00:00 100 0.01
#15 2008-01-01 02:00:00 100 0.01
#16 2008-01-01 03:00:00 100 0.01
如果您想要如图所示的顺序,您可以安排上述结果或使用tidyr::expand_grid:
tidyr::expand_grid(
dt = seq(as.POSIXct("2008-01-01 00:00:00", 'UTC'),
as.POSIXct("2008-01-01 03:00:00", 'UTC'), 'hour'),
depth = c(2, 40, 45, 100),
var1 = 0.01
) -> result
result
# A tibble: 16 x 3
# dt depth var1
# <dttm> <dbl> <dbl>
# 1 2008-01-01 00:00:00 2 0.01
# 2 2008-01-01 00:00:00 40 0.01
# 3 2008-01-01 00:00:00 45 0.01
# 4 2008-01-01 00:00:00 100 0.01
# 5 2008-01-01 01:00:00 2 0.01
# 6 2008-01-01 01:00:00 40 0.01
# 7 2008-01-01 01:00:00 45 0.01
# 8 2008-01-01 01:00:00 100 0.01
# 9 2008-01-01 02:00:00 2 0.01
#10 2008-01-01 02:00:00 40 0.01
#11 2008-01-01 02:00:00 45 0.01
#12 2008-01-01 02:00:00 100 0.01
#13 2008-01-01 03:00:00 2 0.01
#14 2008-01-01 03:00:00 40 0.01
#15 2008-01-01 03:00:00 45 0.01
#16 2008-01-01 03:00:00 100 0.01