R/extract_layer_output.R
extract_layer_output.Rd
Convenience function to reorganize soil layer time series data from
layer_output
list entry produced with run_LWFB90
. The data is tansformed to a
wide format, by casting the variables with the layer number using data.table's
dcast
-function.
extract_layer_output(
x,
layers = NULL,
value_vars = NULL,
layer_index_name = "nl",
sep = ""
)
Data.frame or data.table with layer data organized in rows and
identified by a layer index column named layer_index_nm
.
Integer vector to select a subset of layers. If not supplied, values from all layers will be returned.
Character vector containing names of value-variables to be
extracted from x
. If not supplied, value_vars
will be
guessed.
Column containing layer index. Defaults to 'nl' as in
layer_output
.
Separation character for constructig names from variable name and layer index.
A data.table with the layers' values of the variables organized in columns with the names being made up of the variable name and the layer index.
# create a data.frame with monthly values
# identifiers: layer number, yr and mo
df <- expand.grid(nl = 1:5,
yr = 2002,
mo = 1:12)
df
#> nl yr mo
#> 1 1 2002 1
#> 2 2 2002 1
#> 3 3 2002 1
#> 4 4 2002 1
#> 5 5 2002 1
#> 6 1 2002 2
#> 7 2 2002 2
#> 8 3 2002 2
#> 9 4 2002 2
#> 10 5 2002 2
#> 11 1 2002 3
#> 12 2 2002 3
#> 13 3 2002 3
#> 14 4 2002 3
#> 15 5 2002 3
#> 16 1 2002 4
#> 17 2 2002 4
#> 18 3 2002 4
#> 19 4 2002 4
#> 20 5 2002 4
#> 21 1 2002 5
#> 22 2 2002 5
#> 23 3 2002 5
#> 24 4 2002 5
#> 25 5 2002 5
#> 26 1 2002 6
#> 27 2 2002 6
#> 28 3 2002 6
#> 29 4 2002 6
#> 30 5 2002 6
#> 31 1 2002 7
#> 32 2 2002 7
#> 33 3 2002 7
#> 34 4 2002 7
#> 35 5 2002 7
#> 36 1 2002 8
#> 37 2 2002 8
#> 38 3 2002 8
#> 39 4 2002 8
#> 40 5 2002 8
#> 41 1 2002 9
#> 42 2 2002 9
#> 43 3 2002 9
#> 44 4 2002 9
#> 45 5 2002 9
#> 46 1 2002 10
#> 47 2 2002 10
#> 48 3 2002 10
#> 49 4 2002 10
#> 50 5 2002 10
#> 51 1 2002 11
#> 52 2 2002 11
#> 53 3 2002 11
#> 54 4 2002 11
#> 55 5 2002 11
#> 56 1 2002 12
#> 57 2 2002 12
#> 58 3 2002 12
#> 59 4 2002 12
#> 60 5 2002 12
#add a value variable
df$var <- runif(nrow(df), -1,0)
extract_layer_output(df)
#> yr mo var1 var2 var3 var4 var5
#> 1: 2002 1 -0.16480767 -0.7363713 -0.450816991 -0.22917956 -0.828359965
#> 2: 2002 2 -0.26055609 -0.6714478 -0.365760029 -0.23650065 -0.640860982
#> 3: 2002 3 -0.94099979 -0.3853408 -0.721296859 -0.87592338 -0.857721671
#> 4: 2002 4 -0.55891793 -0.3499749 -0.005438818 -0.55720164 -0.212353946
#> 5: 2002 5 -0.92582842 -0.8204014 -0.747671254 -0.83317727 -0.719985466
#> 6: 2002 6 -0.95175544 -0.6504895 -0.509334259 -0.36558540 -0.265463822
#> 7: 2002 7 -0.06155794 -0.7201865 -0.707403520 -0.05634485 -0.342059582
#> 8: 2002 8 -0.35332827 -0.3031461 -0.826367595 -0.08687404 -0.933860048
#> 9: 2002 9 -0.56805584 -0.1848150 -0.217588380 -0.69276000 -0.092262531
#> 10: 2002 10 -0.30945862 -0.8701533 -0.152375176 -0.65399429 -0.003415519
#> 11: 2002 11 -0.87509092 -0.5769271 -0.671267465 -0.41564302 -0.069455668
#> 12: 2002 12 -0.72481623 -0.6373049 -0.502003587 -0.64624194 -0.987994365
# add more variables
df$var1 <- runif(nrow(df), 1,2)
df$var2 <- runif(nrow(df), 2,3)
# extract specific layers
extract_layer_output(df,layers = 2:4, sep = "_layer")
#> yr mo var_layer2 var_layer3 var_layer4 var1_layer2 var1_layer3
#> 1: 2002 1 -0.7363713 -0.450816991 -0.22917956 1.469337 1.667517
#> 2: 2002 2 -0.6714478 -0.365760029 -0.23650065 1.977341 1.684494
#> 3: 2002 3 -0.3853408 -0.721296859 -0.87592338 1.279947 1.187596
#> 4: 2002 4 -0.3499749 -0.005438818 -0.55720164 1.456246 1.628871
#> 5: 2002 5 -0.8204014 -0.747671254 -0.83317727 1.812764 1.313226
#> 6: 2002 6 -0.6504895 -0.509334259 -0.36558540 1.157975 1.960097
#> 7: 2002 7 -0.7201865 -0.707403520 -0.05634485 1.661000 1.829302
#> 8: 2002 8 -0.3031461 -0.826367595 -0.08687404 1.883449 1.155952
#> 9: 2002 9 -0.1848150 -0.217588380 -0.69276000 1.340790 1.674713
#> 10: 2002 10 -0.8701533 -0.152375176 -0.65399429 1.893890 1.190447
#> 11: 2002 11 -0.5769271 -0.671267465 -0.41564302 1.854039 1.805623
#> 12: 2002 12 -0.6373049 -0.502003587 -0.64624194 1.781052 1.681226
#> var1_layer4 var2_layer2 var2_layer3 var2_layer4
#> 1: 1.537465 2.596767 2.542806 2.694798
#> 2: 1.806034 2.940629 2.601226 2.158738
#> 3: 1.872244 2.156322 2.948156 2.486081
#> 4: 1.472411 2.767475 2.283582 2.464242
#> 5: 1.204853 2.397508 2.089493 2.018675
#> 6: 1.693735 2.986667 2.934715 2.479744
#> 7: 1.886658 2.347579 2.045067 2.892287
#> 8: 1.468420 2.974374 2.703891 2.641573
#> 9: 1.544759 2.786758 2.509810 2.623675
#> 10: 1.417110 2.541619 2.311058 2.434701
#> 11: 1.021273 2.017398 2.605439 2.191787
#> 12: 1.596433 2.829182 2.918514 2.212208
#extract specific variables
extract_layer_output(df, layers = 2:4, value_vars = c("var1", "var2"), sep = "_layer")
#> yr mo var1_layer2 var1_layer3 var1_layer4 var2_layer2 var2_layer3
#> 1: 2002 1 1.469337 1.667517 1.537465 2.596767 2.542806
#> 2: 2002 2 1.977341 1.684494 1.806034 2.940629 2.601226
#> 3: 2002 3 1.279947 1.187596 1.872244 2.156322 2.948156
#> 4: 2002 4 1.456246 1.628871 1.472411 2.767475 2.283582
#> 5: 2002 5 1.812764 1.313226 1.204853 2.397508 2.089493
#> 6: 2002 6 1.157975 1.960097 1.693735 2.986667 2.934715
#> 7: 2002 7 1.661000 1.829302 1.886658 2.347579 2.045067
#> 8: 2002 8 1.883449 1.155952 1.468420 2.974374 2.703891
#> 9: 2002 9 1.340790 1.674713 1.544759 2.786758 2.509810
#> 10: 2002 10 1.893890 1.190447 1.417110 2.541619 2.311058
#> 11: 2002 11 1.854039 1.805623 1.021273 2.017398 2.605439
#> 12: 2002 12 1.781052 1.681226 1.596433 2.829182 2.918514
#> var2_layer4
#> 1: 2.694798
#> 2: 2.158738
#> 3: 2.486081
#> 4: 2.464242
#> 5: 2.018675
#> 6: 2.479744
#> 7: 2.892287
#> 8: 2.641573
#> 9: 2.623675
#> 10: 2.434701
#> 11: 2.191787
#> 12: 2.212208