| sorter | R Documentation |
A function to sort an longCat object created by longCat. sorter must be used directly when stratified plots of subgroups are desired, or when sorting other than the default is desired. Otherwise, sorter is used internally with the defaults by longCatPlot if lc$sorted=FALSE. If an object has already been sorted (lc$sorted=TRUE), sorter will not resort it but will print a code example of how to use multiple sortings.
sorter(
lc,
ascending = TRUE,
whichColumns = NULL,
num = TRUE,
mindur = NULL,
igrpt = FALSE,
customSort = NULL,
initFirst = FALSE,
group = NULL,
groupLabels = NULL,
ggap = NULL
)
lc |
An object of class |
ascending |
Logical indicating if sorting should be done in ascending order. Default is |
whichColumns |
A numeric vector indicating which columns in |
num |
See |
mindur |
See |
igrpt |
Should |
customSort |
A vector of the same length as the number of rows in |
initFirst |
If |
group |
A vector indicating group membership, of the same length as the number of rows in |
groupLabels |
Numeric or character labels for the groups specified in |
ggap |
A number between zero and one indicating the proportion of blank rows to be plotted between groups when |
Returns an object of class longCat where lc$sorted=TRUE.
Stephen J. Tueller
Tueller, S. J., Van Dorn, R. A., & Bobashev, G. V. (2016). Visualization of categorical longitudinal and times series data (Report No. MR-0033-1602). Research Triangle Park, NC: RTI Press. http://www.rti.org/publication/visualization-categorical-longitudinal-and-times-series-data
longCat and longCatPlot for further functionality.
### create a plot like that in Figure 3 from Tueller, Van Dorn, & Bobashev (2016)
par(mfrow=c(1,2), bg='cornsilk3')
times <- c(1,100,200,300,400,500,600)
f3lc <- longCat(example3, times); f3lc$sorted <- TRUE; f3lc$y.sorted <- f3lc$y
longCatPlot(f3lc, main='Unsorted', colScheme='heat', lwd=2, legendBuffer=.2)
f3lc <- longCat(example3, times)
longCatPlot(f3lc, main='Sorted', colScheme='heat', lwd=2, legendBuffer=.2)
### sort with a grouping variable and plot
par(mfrow=c(1,1), bg='cornsilk3', mar=c(5.1, 4.1, 4.1, 9.1), xpd=TRUE)
times <- c(1,100,200,300,400,500,600)
lc <- longCat(example3, times)
group <- sample(1:3, nrow(example3), replace=TRUE)
grouplc <- sorter(lc, group=group, groupLabels=1:3)
cols <- longCatPlot(grouplc, groupBuffer=.15, main='Grouped Data', colScheme='heat',
lwd=2, legendBuffer=0)
legend(610, 130, legend=1:5, col=cols, lty=1, lwd=2)
par(bg='transparent', mar = c(5, 4, 4, 2) + 0.1, xpd=FALSE)
### using the sorted data from the previous plot, repeate using ggplot2
# following the example of Figure 4 of bdemarest's answer on
# https://stackoverflow.com/questions/11513149/
# good-ways-to-visualize-longitudinal-categorical-data-in-r/
grouplc.df <- data.frame(id=1:nrow(grouplc$group.sorted),
group=grouplc$group.sorted[,1], grouplc$y.sorted)
grouplc.long <- reshape(grouplc.df,
varying = names(grouplc$y.sorted),
v.names = "score",
timevar = "time",
times = times[1:ncol(grouplc$y.sorted)],
direction = "long")
grouplc.long$score <- factor(grouplc.long$score)
grouplc.long$group <- factor(grouplc.long$group, level=3:1)
# remove NA's introduced using group option in sorter
grouplc.long <- na.omit(grouplc.long)
library(ggplot2)
ggplot(grouplc.long, aes(x=time, y=id, fill=score)) +
geom_tile(colour="transparent") +
scale_fill_manual(values=cols) +
facet_grid(group ~ ., space="free_y", scales="free_y")
### sort with a grouping variable and events and plot
times <- c(1,100,200,300,400,500,600)
set.seed(45962)
events <- matrix(sample(1:3, nrow(example3)*2, replace=TRUE), nrow(example3), 2)
set.seed(23498)
event.times <- matrix(sample(min(times):max(times), nrow(example3)*2, replace=TRUE),
nrow(example3), 2)
labels <- c('Street', 'Drug Tx', 'Jail', 'Prison', 'Unknown')
eventLabels=c('Arrest', 'Drug Test', 'Hearing')
eventlc <- longCat(example3, times=times, Labels=labels,
events=events, event.times=event.times,
eventLabels=eventLabels)
set.seed(4290)
groupevent <- sample(1:3, nrow(example3), replace=TRUE)
groupeventlc <- sorter(eventlc, group=groupevent)
par(mfrow=c(1,1), bg='cornsilk3', mar=c(5.1, 4.1, 4.1, 12.1), xpd=TRUE)
cols <- longCatPlot(groupeventlc, legendBuffer=0, groupBuffer=0.15,
main='Grouping and Events')
legend(610, 130, legend=groupeventlc$Labels, lty=1, col=cols, lwd=2)
legend(610, 60, legend=groupeventlc$eventLabels,
pch=1:length(groupeventlc$eventLabels))
par(bg='transparent', mar = c(5, 4, 4, 2) + 0.1, xpd=FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.