Skip to contents

Take a `data.frame` and return compact `data.frame` of event types and strategies.

Usage

collapse_data(
  data,
  model,
  drop_NA = TRUE,
  drop_family = FALSE,
  summary = FALSE
)

Arguments

data

A data.frame. Data of nodes that can take three values: 0, 1, and NA. In long form as generated by make_events

model

A causal_model. A model object generated by make_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

# }