View source: R/violatedEdits.R
violatedEdits | R Documentation |
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.
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, ...)
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 |
An object of class violatedEdits
, which is a logical nrow(dat)Xnedits(E)
matrix with an extra class
attribute
for overloading purposes.
When summarizing an object of class violatedEdits
, every
empty value is counted as one edit violation when counting violations per record.
checkDatamodel
# 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.