Learn R Programming

editrules (version 2.7.2)

violatedEdits: 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.<="" li="">
For rules of the form Ax < b, Ax - b < tol is returned. For rules of the form Ax <= b="" ax-="" <="tol" is="" returned.<="" item="">

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
character vector with constraintsm, editset, editmatrix or
dat
data.frame with data that should be checked, if a named vector is supplied it will converted internally to a data.frame
...
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
violatedEdits object.
topn
Top n edits to be plotted.
object
violatedEdits 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.

code

sqrt(.Machine$double.eps)

See Also

checkDatamodel

Examples

Run this code
# 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(c(
    "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)

Run the code above in your browser using DataLab