cranvas (version 0.8.5)

link_cat: Categorical linking

Description

This function links two mutaframes together (or one mutaframe to itself) by a common categorical variable so that whenever one element (or multiple elements) in a category (or multiple categories) is brushed, all elements in this (these) categories will be brushed.

Usage

link_cat(mf1, var1, mf2 = NULL, var2 = NULL)

Arguments

mf1
the first mutaframe
var1
the name of the linking variable of mf1
mf2
(optional) the second mutaframe; default NULL means mf1 will be linked to itself
var2
(optional) the name of the linking variable of mf2

Value

The mutaframes will be linked together by their linking variables (listeners are added to mutaframes), and the id's of the listeners attached on each mutaframe will be returned as a vector (first element for the first mutaframe; second element for the second one).

Details

Categorical linking is achieved by a series of logical operations: first, look for which rows are brushed in the first mutaframe, and find out the values of its linking variable as well as the categories they belong to, then look for which elements of the linking variable in the second mutaframe (possibly the same mutaframe) are in these categories, and brush these elements (corresponding to rows).

The implementation is through listeners on mutaframes from the plumbr package. It may be important keep track of the id's of listeners to avoid unnecessary burden of updating data objects in a linking chain. Listeners can be detached from mutaframes by remove_link (see examples below).

See Also

qdata

Examples

Run this code
library(cranvas)

### (1) linking to between two tables, using common id variable

qwg <- qdata(wages.demog)
# qscatter(ged, race, data=qwg)
qbar(race, data = qwg)
qbar(ged, data = qwg)
qhist(hgc, data = qwg)

qwages <- qdata(wages)
qscatter(exper, lnw, data = qwages, alpha = 0.5)

id <- link_cat(qwages, var1 = "id", qwg, var2 = "id")

remove_link(qwages, id[1])
remove_link(qwg, id[2])

### (1.5) linking between two datasets, using several id variables
id <- link_cat(qwages, var1 = c("black", "hispanic"), qwg, var2 = c("black", "hispanic"))

qscatter(exper, lnw, data = qwages, alpha = 0.5)
qbar(black, data = qwg)
qbar(hispanic, data = qwg)

remove_link(qwages, id[1])
remove_link(qwg, id[2])

### (2) linking to oneself through a categorical variable
data(flea, package = "tourr")

qflea <- qdata(flea, color = species)
qhist(tars1, data = qflea)  # an ordinary histogram; try brushing

## now we link qflea to itself by species
id <- link_cat(qflea, "species")
## brush the plot and see what happens

remove_link(qflea, id)  # remove this linking; back to normal linking again

### (2.5) link to oneself by several categorical variables
idmulti <- link_cat(qwages, c("ged", "black", "hispanic"))

qscatter(exper, lnw, data = qwages, alpha = 0.5)

remove_link(qwages, idmulti)

### (3) link the original data with a frequency table
tab2 <- as.data.frame(table(flea$species))
colnames(tab2) <- c("type", "freq")
(qflea2 <- qdata(tab2))
head(qflea)  # what the two datasets look like

## see how two different datasets can be linked through a common categorical
## variable
id <- link_cat(qflea, var1 = "species", qflea2, var2 = "type")
qhist(tars1, data = qflea)
qbar(type, data = qflea2, standardize = TRUE)

## remove the linking on two datasets respectively
remove_link(qflea, id[1])
remove_link(qflea2, id[2])

cranvas_off()

Run the code above in your browser using DataCamp Workspace