Free Access Week - Data Engineering + BI
Data Engineering and BI courses are free this week!
Free Access Week - Jun 2-8

relations (version 0.6-9)

transform: Transform incidences

Description

Carry out transformations between incidence matrices from endorelations and other codings.

Usage

transform_incidences(x, from = c("PO", "SO", "01", "-1+1"),
                        to = c("PO", "SO", "01", "-1+1"))

Arguments

x

An incidence matrix from an endorelation.

from, to

The coding scheme (see Details).

Details

In the following, we consider an incidence matrix X with cells xjk of a relation R with tuples (aj,bk).

For the "PO" (“Preference Order”) coding, X is a 0/1 matrix, and ajRbk iff xjk=1. It follows in particular that if both xjk and xkj are 0, the corresponding pair (aj,bk) is not contained in R, i.e., aj and bk are unrelated.

For the "SO" (“"Strict Order"”) coding, X is a 0/1 matrix with possible NA values. As for "PO", ajRbk iff xjk=1, but at most one of xjk and xkj can be 1. If both are missing (NA), aj and bk are unrelated.

For the "01" coding, X is a matrix with values 0, 1, or 0.5. The coding is similar to "SO", except that NA is represented by 0.5.

For the "-1+1" coding, X is a matrix with values -1, 0, or 1. The coding is similar to "SO", except that NA is represented by 0, and xjk=1 if not ajRbk.

See Also

relation_incidence().

Examples

Run this code
# NOT RUN {
require("sets")				# set(), pair() etc.
x <- relation(domain = c(1,2,3,4),
              graph = set(pair(1,2), pair(4,2), pair(1,3), pair(1,4),
                          pair(3,2), pair(2,1)))
inc <- relation_incidence(x)
print(inc)

transform_incidences(inc, to = "SO")
transform_incidences(inc, to = "01")
transform_incidences(inc, to = "-1+1")

## transformations should be loss-free:
inc2 <- transform_incidences(inc, from = "PO", to = "-1+1")
inc2 <- transform_incidences(inc2, from = "-1+1", to = "SO")
inc2 <- transform_incidences(inc2, from = "SO", to = "01")
inc2 <- transform_incidences(inc2, from = "01", to = "PO")
stopifnot(identical(inc, inc2))
# }

Run the code above in your browser using DataLab