Learn R Programming

editrules (version 2.9.5)

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.

  • 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 character violatedEdits(E, dat, name = NULL, ...)

# S3 method for editmatrix violatedEdits(E, dat, tol = 0, ...)

# S3 method for editarray violatedEdits(E, dat, datamodel = TRUE, ...)

# S3 method for editset violatedEdits(E, dat, datamodel = TRUE, ...)

# S3 method for violatedEdits plot(x, topn = min(10, ncol(x)), ...)

# S3 method for violatedEdits summary(object, E = NULL, minfreq = 1, ...)

# S3 method for violatedEdits as.data.frame(x, ...)

Value

An object of class violatedEdits, which is a logical nrow(dat)Xnedits(E) matrix with an extra class attribute for overloading purposes.

Arguments

E

character vector with constraintsm, editset, editmatrix or editarray.

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

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(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)


Run the code above in your browser using DataLab