Filters cases based on the precedence relations between two sets of activities.
Usage
filter_precedence(
log,
antecedents,
consequents,
precedence_type = c("directly_follows", "eventually_follows"),
filter_method = c("all", "one_of", "none"),
reverse = FALSE,
eventlog = deprecated()
)
# S3 method for class 'log'
filter_precedence(
log,
antecedents,
consequents,
precedence_type = c("directly_follows", "eventually_follows"),
filter_method = c("all", "one_of", "none"),
reverse = FALSE,
eventlog = deprecated()
)
# S3 method for class 'grouped_log'
filter_precedence(
log,
antecedents,
consequents,
precedence_type = c("directly_follows", "eventually_follows"),
filter_method = c("all", "one_of", "none"),
reverse = FALSE,
eventlog = deprecated()
)Arguments
- log
log: Object of classlogor derivatives (grouped_log,eventlog,activitylog, etc.).- antecedents, consequents
charactervector: The set of antecendent and consequent activities. Both arecharactervectors containing at least one activity identifier. All pairs of antecedents and consequents are turned into seperate precedence rules.- precedence_type
character(default"directly_follows"): When"directly_follows", the consequent activity should happen immediately after the antecedent activities.
When"eventually_follows", other events are allowed to happen in between.- filter_method
character(default"all"): When"all", only cases where all the relations are valid are preserved.
When"one_of", all the cases where at least one of the conditions hold, are preserved.
When"none", none of the relations are allowed.- reverse
logical(defaultFALSE): Indicating whether the selection should be reversed.- eventlog
Value
When given an object of type log, it will return a filtered log.
When given an object of type grouped_log, the filter will be applied in a stratified way (i.e. each separately for each group).
The returned log will be grouped on the same variables as the original log.
Details
In order to extract a subset of an event log which conforms with a set of precedence rules, one can use the filter_precedence method.
There are two types of precendence relations which can be tested: activities that should directly follow ("directly_follows") each other,
or activities that should eventually follow ("eventually_follows") each other. The type can be set with the precedence_type argument.
Further, the filter requires a vector of one or more antecedents (containing activity labels), and one or more consequents.
Finally, a filter_method argument can be set. This argument is relevant when there is more than one antecedent or consequent.
In such a case, you can specify that all possible precedence combinations must be present ("all"),
at least one of them ("one_of"), or none ("none").
Methods (by class)
filter_precedence(log): Filters cases for alog.filter_precedence(grouped_log): Filters cases for agrouped_log.
References
Swennen, M. (2018). Using Event Log Knowledge to Support Operational Exellence Techniques (Doctoral dissertation). Hasselt University.
See also
Other filters:
filter_activity(),
filter_activity_frequency(),
filter_activity_instance(),
filter_activity_presence(),
filter_case(),
filter_case_condition(),
filter_endpoints(),
filter_endpoints_condition(),
filter_flow_time(),
filter_idle_time(),
filter_infrequent_flows(),
filter_lifecycle(),
filter_lifecycle_presence(),
filter_precedence_condition(),
filter_precedence_resource(),
filter_processing_time(),
filter_resource(),
filter_resource_frequency(),
filter_throughput_time(),
filter_time_period(),
filter_trace(),
filter_trace_frequency(),
filter_trace_length(),
filter_trim(),
filter_trim_lifecycle()
Examples
eventdataR::patients %>%
filter_precedence(antecedents = "Triage and Assessment",
consequents = "Blood test",
precedence_type = "directly_follows") %>%
bupaR::traces()
#> # A tibble: 3 × 3
#> trace absolute_frequency relative_frequency
#> <chr> <int> <dbl>
#> 1 Registration,Triage and Assessment,Bloo… 234 0.987
#> 2 Registration,Triage and Assessment,Bloo… 2 0.00844
#> 3 Registration,Triage and Assessment,Bloo… 1 0.00422
eventdataR::patients %>%
filter_precedence(antecedents = "Triage and Assessment",
consequents = c("Blood test", "X-Ray", "MRI SCAN"),
precedence_type = "eventually_follows",
filter_method = "one_of") %>%
bupaR::traces()
#> # A tibble: 6 × 3
#> trace absolute_frequency relative_frequency
#> <chr> <int> <dbl>
#> 1 Registration,Triage and Assessment,X-Ra… 258 0.518
#> 2 Registration,Triage and Assessment,Bloo… 234 0.470
#> 3 Registration,Triage and Assessment,Bloo… 2 0.00402
#> 4 Registration,Triage and Assessment,X-Ray 2 0.00402
#> 5 Registration,Triage and Assessment,X-Ra… 1 0.00201
#> 6 Registration,Triage and Assessment,Bloo… 1 0.00201
