The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
These functions turn a wide table (one column per trait) into pieces
that can be analysed one at a time: by trait and group
(w2l_nest(), w2l_split()), by pairs of traits
(c2p_nest()), or with the levels of one column side by side
(r2p_nest()).
w2l_nest()# Example: Wide to long format nesting demonstrations
# Example 1: Basic nesting by group
w2l_nest(
data = iris, # Input dataset
by = "Species" # Group by Species column
)
#> Species data
#> <fctr> <list>
#> 1: setosa <data.table[50x4]>
#> 2: versicolor <data.table[50x4]>
#> 3: virginica <data.table[50x4]>
# Example 2: Nest specific columns with numeric indices
w2l_nest(
data = iris, # Input dataset
cols = 1:4, # Select first 4 columns to nest
by = "Species" # Group by Species column
)
#> name Species data
#> <char> <fctr> <list>
#> 1: Sepal.Length setosa <data.table[50x1]>
#> 2: Sepal.Length versicolor <data.table[50x1]>
#> 3: Sepal.Length virginica <data.table[50x1]>
#> 4: Sepal.Width setosa <data.table[50x1]>
#> 5: Sepal.Width versicolor <data.table[50x1]>
#> 6: Sepal.Width virginica <data.table[50x1]>
#> 7: Petal.Length setosa <data.table[50x1]>
#> 8: Petal.Length versicolor <data.table[50x1]>
#> 9: Petal.Length virginica <data.table[50x1]>
#> 10: Petal.Width setosa <data.table[50x1]>
#> 11: Petal.Width versicolor <data.table[50x1]>
#> 12: Petal.Width virginica <data.table[50x1]>
# Example 3: Nest specific columns with column names
w2l_nest(
data = iris, # Input dataset
cols = c("Sepal.Length", # Select columns by name
"Sepal.Width",
"Petal.Length"),
by = 5 # Group by column index 5 (Species)
)
#> name Species data
#> <char> <fctr> <list>
#> 1: Sepal.Length setosa <data.table[50x2]>
#> 2: Sepal.Length versicolor <data.table[50x2]>
#> 3: Sepal.Length virginica <data.table[50x2]>
#> 4: Sepal.Width setosa <data.table[50x2]>
#> 5: Sepal.Width versicolor <data.table[50x2]>
#> 6: Sepal.Width virginica <data.table[50x2]>
#> 7: Petal.Length setosa <data.table[50x2]>
#> 8: Petal.Length versicolor <data.table[50x2]>
#> 9: Petal.Length virginica <data.table[50x2]>
# Returns similar structure to Example 2w2l_split()# Example: Wide to long format splitting demonstrations
# Example 1: Basic splitting by Species
w2l_split(
data = iris, # Input dataset
by = "Species" # Split by Species column
) |>
lapply(head) # Show first 6 rows of each split
#> $setosa
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> <num> <num> <num> <num>
#> 1: 5.1 3.5 1.4 0.2
#> 2: 4.9 3.0 1.4 0.2
#> 3: 4.7 3.2 1.3 0.2
#> 4: 4.6 3.1 1.5 0.2
#> 5: 5.0 3.6 1.4 0.2
#> 6: 5.4 3.9 1.7 0.4
#>
#> $versicolor
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> <num> <num> <num> <num>
#> 1: 7.0 3.2 4.7 1.4
#> 2: 6.4 3.2 4.5 1.5
#> 3: 6.9 3.1 4.9 1.5
#> 4: 5.5 2.3 4.0 1.3
#> 5: 6.5 2.8 4.6 1.5
#> 6: 5.7 2.8 4.5 1.3
#>
#> $virginica
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> <num> <num> <num> <num>
#> 1: 6.3 3.3 6.0 2.5
#> 2: 5.8 2.7 5.1 1.9
#> 3: 7.1 3.0 5.9 2.1
#> 4: 6.3 2.9 5.6 1.8
#> 5: 6.5 3.0 5.8 2.2
#> 6: 7.6 3.0 6.6 2.1
# Example 2: Split specific columns using numeric indices
w2l_split(
data = iris, # Input dataset
cols = 1:3, # Select first 3 columns to split
by = 5 # Split by column index 5 (Species)
) |>
lapply(head) # Show first 6 rows of each split
#> $Sepal.Length_setosa
#> Petal.Width value
#> <num> <num>
#> 1: 0.2 5.1
#> 2: 0.2 4.9
#> 3: 0.2 4.7
#> 4: 0.2 4.6
#> 5: 0.2 5.0
#> 6: 0.4 5.4
#>
#> $Sepal.Length_versicolor
#> Petal.Width value
#> <num> <num>
#> 1: 1.4 7.0
#> 2: 1.5 6.4
#> 3: 1.5 6.9
#> 4: 1.3 5.5
#> 5: 1.5 6.5
#> 6: 1.3 5.7
#>
#> $Sepal.Length_virginica
#> Petal.Width value
#> <num> <num>
#> 1: 2.5 6.3
#> 2: 1.9 5.8
#> 3: 2.1 7.1
#> 4: 1.8 6.3
#> 5: 2.2 6.5
#> 6: 2.1 7.6
#>
#> $Sepal.Width_setosa
#> Petal.Width value
#> <num> <num>
#> 1: 0.2 3.5
#> 2: 0.2 3.0
#> 3: 0.2 3.2
#> 4: 0.2 3.1
#> 5: 0.2 3.6
#> 6: 0.4 3.9
#>
#> $Sepal.Width_versicolor
#> Petal.Width value
#> <num> <num>
#> 1: 1.4 3.2
#> 2: 1.5 3.2
#> 3: 1.5 3.1
#> 4: 1.3 2.3
#> 5: 1.5 2.8
#> 6: 1.3 2.8
#>
#> $Sepal.Width_virginica
#> Petal.Width value
#> <num> <num>
#> 1: 2.5 3.3
#> 2: 1.9 2.7
#> 3: 2.1 3.0
#> 4: 1.8 2.9
#> 5: 2.2 3.0
#> 6: 2.1 3.0
#>
#> $Petal.Length_setosa
#> Petal.Width value
#> <num> <num>
#> 1: 0.2 1.4
#> 2: 0.2 1.4
#> 3: 0.2 1.3
#> 4: 0.2 1.5
#> 5: 0.2 1.4
#> 6: 0.4 1.7
#>
#> $Petal.Length_versicolor
#> Petal.Width value
#> <num> <num>
#> 1: 1.4 4.7
#> 2: 1.5 4.5
#> 3: 1.5 4.9
#> 4: 1.3 4.0
#> 5: 1.5 4.6
#> 6: 1.3 4.5
#>
#> $Petal.Length_virginica
#> Petal.Width value
#> <num> <num>
#> 1: 2.5 6.0
#> 2: 1.9 5.1
#> 3: 2.1 5.9
#> 4: 1.8 5.6
#> 5: 2.2 5.8
#> 6: 2.1 6.6
# Example 3: Split specific columns using column names
list_res <- w2l_split(
data = iris, # Input dataset
cols = c("Sepal.Length", # Select columns by name
"Sepal.Width"),
by = "Species" # Split by Species column
)
lapply(list_res, head) # Show first 6 rows of each split
#> $Sepal.Length_setosa
#> Petal.Length Petal.Width value
#> <num> <num> <num>
#> 1: 1.4 0.2 5.1
#> 2: 1.4 0.2 4.9
#> 3: 1.3 0.2 4.7
#> 4: 1.5 0.2 4.6
#> 5: 1.4 0.2 5.0
#> 6: 1.7 0.4 5.4
#>
#> $Sepal.Length_versicolor
#> Petal.Length Petal.Width value
#> <num> <num> <num>
#> 1: 4.7 1.4 7.0
#> 2: 4.5 1.5 6.4
#> 3: 4.9 1.5 6.9
#> 4: 4.0 1.3 5.5
#> 5: 4.6 1.5 6.5
#> 6: 4.5 1.3 5.7
#>
#> $Sepal.Length_virginica
#> Petal.Length Petal.Width value
#> <num> <num> <num>
#> 1: 6.0 2.5 6.3
#> 2: 5.1 1.9 5.8
#> 3: 5.9 2.1 7.1
#> 4: 5.6 1.8 6.3
#> 5: 5.8 2.2 6.5
#> 6: 6.6 2.1 7.6
#>
#> $Sepal.Width_setosa
#> Petal.Length Petal.Width value
#> <num> <num> <num>
#> 1: 1.4 0.2 3.5
#> 2: 1.4 0.2 3.0
#> 3: 1.3 0.2 3.2
#> 4: 1.5 0.2 3.1
#> 5: 1.4 0.2 3.6
#> 6: 1.7 0.4 3.9
#>
#> $Sepal.Width_versicolor
#> Petal.Length Petal.Width value
#> <num> <num> <num>
#> 1: 4.7 1.4 3.2
#> 2: 4.5 1.5 3.2
#> 3: 4.9 1.5 3.1
#> 4: 4.0 1.3 2.3
#> 5: 4.6 1.5 2.8
#> 6: 4.5 1.3 2.8
#>
#> $Sepal.Width_virginica
#> Petal.Length Petal.Width value
#> <num> <num> <num>
#> 1: 6.0 2.5 3.3
#> 2: 5.1 1.9 2.7
#> 3: 5.9 2.1 3.0
#> 4: 5.6 1.8 2.9
#> 5: 5.8 2.2 3.0
#> 6: 6.6 2.1 3.0
# Returns similar structure to Example 2c2p_nest()# Example data preparation: Define column names for combination
col_names <- c("Sepal.Length", "Sepal.Width", "Petal.Length")
# Example 1: Basic column-to-pairs nesting with custom separator
c2p_nest(
iris, # Input iris dataset
cols = col_names, # Columns to be combined as pairs
pairs_n = 2, # Create pairs of 2 columns
sep = "&" # Custom separator for pair names
)
#> pairs data
#> <char> <list>
#> 1: Sepal.Length&Sepal.Width <data.table[150x4]>
#> 2: Sepal.Length&Petal.Length <data.table[150x4]>
#> 3: Sepal.Width&Petal.Length <data.table[150x4]>
# Returns a nested data.table where:
# - pairs: combined column names (e.g., "Sepal.Length&Sepal.Width")
# - data: list column containing data.tables with value1, value2 columns
# Example 2: Column-to-pairs nesting with numeric indices and grouping
c2p_nest(
iris, # Input iris dataset
cols = 1:3, # First 3 columns to be combined
pairs_n = 2, # Create pairs of 2 columns
by = 5 # Group by 5th column (Species)
)
#> pairs Species data
#> <char> <fctr> <list>
#> 1: Sepal.Length-Sepal.Width setosa <data.table[50x3]>
#> 2: Sepal.Length-Sepal.Width versicolor <data.table[50x3]>
#> 3: Sepal.Length-Sepal.Width virginica <data.table[50x3]>
#> 4: Sepal.Length-Petal.Length setosa <data.table[50x3]>
#> 5: Sepal.Length-Petal.Length versicolor <data.table[50x3]>
#> 6: Sepal.Length-Petal.Length virginica <data.table[50x3]>
#> 7: Sepal.Width-Petal.Length setosa <data.table[50x3]>
#> 8: Sepal.Width-Petal.Length versicolor <data.table[50x3]>
#> 9: Sepal.Width-Petal.Length virginica <data.table[50x3]>
# Returns a nested data.table where:
# - pairs: combined column names
# - Species: grouping variable
# - data: list column containing data.tables grouped by Speciesr2p_nest()# Example: the same traits recorded on the same animals in two farms
set.seed(1)
growth <- data.frame(
animal = rep(sprintf("A%02d", 1:6), each = 2),
farm = rep(c("farm1", "farm2"), times = 6),
adg = round(rnorm(12, 900, 50)), # average daily gain
bf = round(rnorm(12, 11, 1.5), 1) # backfat
)
# Example 1: column names
r2p_nest(
growth,
names_from = "farm", # levels become columns: farm1, farm2
cols = c("adg", "bf"), # traits to pivot
id = "animal" # aligns records of the same animal
)
#> name data
#> <char> <list>
#> 1: adg <data.table[6x3]>
#> 2: bf <data.table[6x3]>
# Returns a nested data.table where:
# - name: trait names (adg, bf)
# - data: one row per animal with columns animal, farm1, farm2
# Example 2: numeric indices
r2p_nest(growth, names_from = 2, cols = 3:4, id = 1)
#> name data
#> <char> <list>
#> 1: adg <data.table[6x3]>
#> 2: bf <data.table[6x3]>These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.