Create a general record to record transform specification.

layout_specification(
  incoming_shape = NULL,
  outgoing_shape = NULL,
  ...,
  recordKeys = character(0),
  incoming_controlTableKeys = colnames(incoming_shape)[[1]],
  outgoing_controlTableKeys = colnames(outgoing_shape)[[1]],
  checkNames = TRUE,
  checkKeys = TRUE,
  strict = FALSE,
  allow_rqdatatable_in = FALSE,
  allow_rqdatatable_out = TRUE
)

Arguments

incoming_shape

data.frame, definition of incoming record shape.

outgoing_shape

data.frame, defintion of outgoing record shape.

...

not used, force later arguments to bind by name.

recordKeys

vector of columns identifying records.

incoming_controlTableKeys

character, which column names of the incoming control table are considered to be keys.

outgoing_controlTableKeys

character, which column names of the outgoing control table are considered to be keys.

checkNames

passed to rowrecs_to_blocks.

checkKeys

passed to rowrecs_to_blocks.

strict

passed to rowrecs_to_blocks.

allow_rqdatatable_in

logical, if TRUE allow rqdatatable shortcutting on simple conversions.

allow_rqdatatable_out

logical, if TRUE allow rqdatatable shortcutting on simple conversions.

Value

a record specification object

Examples

incoming_shape <- qchar_frame( "row", "col1", "col2", "col3" | "row1", v11, v12, v13 | "row2", v21, v22, v23 | "row3", v31, v32, v33 ) outgoing_shape <- qchar_frame( "column", "row1", "row2", "row3" | "col1", v11, v21 , v31 | "col2", v12, v22 , v32 | "col3", v13, v23 , v33 ) data <- build_frame( 'record_id', 'row', 'col1', 'col2', 'col3' | 1, 'row1', 1, 2, 3 | 1, 'row2', 4, 5, 6 | 1, 'row3', 7, 8, 9 | 2, 'row1', 11, 12, 13 | 2, 'row2', 14, 15, 16 | 2, 'row3', 17, 18, 19 ) print(data)
#> record_id row col1 col2 col3 #> 1 1 row1 1 2 3 #> 2 1 row2 4 5 6 #> 3 1 row3 7 8 9 #> 4 2 row1 11 12 13 #> 5 2 row2 14 15 16 #> 6 2 row3 17 18 19
layout <- layout_specification( incoming_shape = incoming_shape, outgoing_shape = outgoing_shape, recordKeys = 'record_id') print(layout)
#> { #> in_record <- wrapr::qchar_frame( #> "record_id" , "row" , "col1", "col2", "col3" | #> . , "row1", v11 , v12 , v13 | #> . , "row2", v21 , v22 , v23 | #> . , "row3", v31 , v32 , v33 ) #> in_keys <- c('record_id', 'row') #> #> # becomes #> #> out_record <- wrapr::qchar_frame( #> "record_id" , "column", "row1", "row2", "row3" | #> . , "col1" , v11 , v21 , v31 | #> . , "col2" , v12 , v22 , v32 | #> . , "col3" , v13 , v23 , v33 ) #> out_keys <- c('record_id', 'column') #> #> # args: c(checkNames = TRUE, checkKeys = TRUE, strict = FALSE, allow_rqdatatable = FALSE) #> } #>
data %.>% layout
#> record_id column row1 row2 row3 #> 1 1 col1 1 4 7 #> 2 1 col2 2 5 8 #> 3 1 col3 3 6 9 #> 4 2 col1 11 14 17 #> 5 2 col2 12 15 18 #> 6 2 col3 13 16 19
data %.>% layout %.>% .(t(layout))
#> record_id row col1 col2 col3 #> 1 1 row1 1 2 3 #> 2 1 row2 4 5 6 #> 3 1 row3 7 8 9 #> 4 2 row1 11 12 13 #> 5 2 row2 14 15 16 #> 6 2 row3 17 18 19