violatedEdits {editrules} | R Documentation |
Check data against constraints
Description
Determine which record violates which edits. Returns NA
when edits
cannot be checked because of missing values in the data.
For rules of the form Ax == b |Ax - b| <= tol is returned.
For rules of the form Ax < b, Ax - b < tol is returned.
For rules of the form Ax <= b Ax- b <= tol is returned.
For numerical records, the default tolerance is 0. When working with doubles,
the square root of machina accuracy is a resonable alternative (sqrt(.Machine\$double.eps)
).
The editmatrix is normalized before checks are performed.
Usage
violatedEdits(E, dat, ...)
## S3 method for class 'character'
violatedEdits(E, dat, name = NULL, ...)
## S3 method for class 'editmatrix'
violatedEdits(E, dat, tol = 0, ...)
## S3 method for class 'editarray'
violatedEdits(E, dat, datamodel = TRUE, ...)
## S3 method for class 'editset'
violatedEdits(E, dat, datamodel = TRUE, ...)
## S3 method for class 'violatedEdits'
plot(x, topn = min(10, ncol(x)), ...)
## S3 method for class 'violatedEdits'
summary(object, E = NULL, minfreq = 1, ...)
## S3 method for class 'violatedEdits'
as.data.frame(x, ...)
Arguments
E |
|
dat |
|
... |
further arguments that can be used by methods implementing this generic function |
name |
name of edits |
tol |
tolerance to check rules against. |
datamodel |
Also check against datamodel? |
x |
|
topn |
Top |
object |
|
minfreq |
minimum freq for edit to be printed |
Value
An object of class violatedEdits
, which is a logical nrow(dat)Xnedits(E)
matrix with an extra class
attribute
for overloading purposes.
Note
When summarizing an object of class violatedEdits
, every
empty value is counted as one edit violation when counting violations per record.
See Also
Examples
# Using character vector to define contraints
E <- editmatrix(c( "x+3*y==2*z"
, "x==z"
)
)
dat <- data.frame( x = c(0,2,1)
, y = c(0,0,1)
, z = c(0,1,1)
)
print(dat)
ve <- violatedEdits(E,dat)
print(ve)
summary(ve, E)
plot(ve)
# An example with categorical data:
E <- editarray(expression(
gender %in% c('male','female'),
pregnant %in% c(TRUE, FALSE),
if( gender == 'male' ) !pregnant
)
)
print(E)
dat <- data.frame(
gender=c('male','male','female','cylon'),
pregnant=c(TRUE,FALSE,TRUE,TRUE)
)
print(dat)
# Standard, the datamodel is checked as well,
violatedEdits(E,dat)
# but we may turn this of
violatedEdits(E,dat,datamodel=FALSE)