conditional-expectations {testdat} | R Documentation |
Expectations: consistency
Description
These functions test whether multiple conditions coexist.
Usage
expect_cond(cond1, cond2, data = get_testdata())
expect_base(
var,
base,
miss = getOption("testdat.miss"),
missing_valid = FALSE,
data = get_testdata()
)
Arguments
cond1 |
< |
cond2 |
< |
data |
A data frame to test. The global test data is used by default. |
var |
An unquoted column name to test. |
base |
< |
miss |
A vector of values to be treated as missing. The testdat.miss option is used by default. |
missing_valid |
Should missing values be treated as valid for records
meeting the |
Value
expect_*()
functions are mainly called for their side effects. The
expectation signals its result (e.g. "success", "failure"), which is logged
by the current test reporter. In a non-testing
context the expectation will raise an error with class
expectation_failure
if it fails.
Functions
-
expect_cond()
: Checks the coexistence of two conditions. It can be read as "ifcond1
thencond2
". -
expect_base()
: A special case that checks missing data against a specified condition. It can be read as "ifbase
thenvar
not missing, if notbase
thenvar
missing".
See Also
Other data expectations:
datacomp-expectations
,
date-expectations
,
exclusivity-expectations
,
expect_depends()
,
generic-expectations
,
label-expectations
,
pattern-expectations
,
proportion-expectations
,
text-expectations
,
uniqueness-expectations
,
value-expectations
Examples
my_survey <- data.frame(
resp_id = 1:5,
q1a = c(0, 1, 0, 1, 0),
q1b = c(NA, NA, NA, 1, 0), # Asked if q1a %in% 1
q2a = c(90, 80, 60, 40, 90),
q2b = c("", "", NA, "Some reason for low rating", "") # Asked if q2a < 50
)
# Check that q1b has a value if and only if q1a %in% 1
try(expect_base(q1b, q1a %in% 1, data = my_survey)) # Fails for resp_id 2 and 5
# Check that q2b has a value if and only if q2a < 50
expect_base(q2b, q2a < 50, data = my_survey)
# Check that if q1a %in% 0 then q2a > 50 (but not vice-versa)
expect_cond(q1a %in% 0, q2a > 50, data = my_survey)