Take a `data.frame` and return compact `data.frame` of event types and strategies.
Arguments
- data
A
data.frame
. Data of nodes that can take three values: 0, 1, and NA. In long form as generated bymake_events
- model
A
causal_model
. A model object generated bymake_model
.- drop_NA
Logical. Whether to exclude strategy families that contain no observed data. Exceptionally if no data is provided, minimal data on data on first node is returned. Defaults to `TRUE`
- drop_family
Logical. Whether to remove column
strategy
from the output. Defaults to `FALSE`.- summary
Logical. Whether to return summary of the data. See details. Defaults to `FALSE`.
Value
A vector of data events
If summary = TRUE
`collapse_data` returns a list containing the
following components:
- data_events
A compact data.frame of event types and strategies.
- observed_events
A vector of character strings specifying the events observed in the data
- unobserved_events
A vector of character strings specifying the events not observed in the data
Examples
# \donttest{
model <- make_model('X -> Y')
df <- data.frame(X = c(0,1,NA), Y = c(0,0,1))
df %>% collapse_data(model)
#> event strategy count
#> 1 X0Y0 XY 1
#> 2 X1Y0 XY 1
#> 3 X0Y1 XY 0
#> 4 X1Y1 XY 0
#> 5 Y0 Y 0
#> 6 Y1 Y 1
collapse_data(df, model, drop_NA = FALSE)
#> event strategy count
#> 1 X0Y0 XY 1
#> 2 X1Y0 XY 1
#> 3 X0Y1 XY 0
#> 4 X1Y1 XY 0
#> 5 Y0 Y 0
#> 6 Y1 Y 1
#> 7 X0 X 0
#> 8 X1 X 0
collapse_data(df, model, drop_family = TRUE)
#> event count
#> 1 X0Y0 1
#> 2 X1Y0 1
#> 3 X0Y1 0
#> 4 X1Y1 0
#> 5 Y0 0
#> 6 Y1 1
collapse_data(df, model, summary = TRUE)
#> $data_events
#> event strategy count
#> 1 X0Y0 XY 1
#> 2 X1Y0 XY 1
#> 3 X0Y1 XY 0
#> 4 X1Y1 XY 0
#> 5 Y0 Y 0
#> 6 Y1 Y 1
#>
#> $observed_events
#> [1] "X0Y0" "X1Y0" "Y1"
#>
#> $unobserved_events
#> [1] "X0Y1" "X1Y1" "Y0"
#>
data <- make_data(model, n = 0)
collapse_data(data, model)
#> event strategy count
#> 1 X0Y0 XY 0
#> 2 X1Y0 XY 0
#> 3 X0Y1 XY 0
#> 4 X1Y1 XY 0
model <- make_model('X -> Y') %>% set_restrictions('X[]==1')
df <- make_data(model, n = 10)
df[1,1] <- ''
collapse_data(df, model)
#> event strategy count
#> 1 X0Y0 XY 5
#> 2 X0Y1 XY 4
#> 3 Y0 Y 1
#> 4 Y1 Y 0
data <- data.frame(X= 0:1)
collapse_data(data, model)
#> X1 data is inconsistent with model and ignored
#> event strategy count
#> 1 X0 X 1
# }