Skip to content

Repository files navigation

controller

Project Status: Active – The project has reached a stable, usable state and is being actively developed.CRAN statusR-CMD-checkTest coverage

DOICRAN downloads

controller is a collection of functions for working with controlled vocabularies in R. It introduces the control() verb, which recodes values in a vector using a lookup table of preferred and variant terms (a thesaurus).

Installation

You can install the latest release of controller from CRAN with:

install.packages("controller")

Or the development version from GitHub using the remotes package:

# install.packages("remotes")remotes::install_github("joeroe/controller")

Usage

A common data-tidying problem is standardising variant terms for the same concept. Imagine we have a dataset that uses a number of different names for shades of the same colour. As data analysts, we naturally want to recode the data to eliminate this messy creativity, for example using dplyr::recode():

library(dplyr, warn.conflicts=FALSE)
shades<- c("daffodil", "purple", "magenta", "azure", "navy", "violet")
recode(shades,
daffodil="yellow",
purple="purple",
magenta="pink",
azure="blue",
navy="blue",
violet="purple")
#> [1] "yellow" "purple" "pink" "blue" "blue" "purple"

But recoding this way can be tedious, especially if there are a large number of terms. With control(), we can instead use a data frame containing a thesaurus to replace the values:

library(controller)
data("colour_thesaurus")
control(shades, colour_thesaurus)
#> Replaced values:#> ℹ daffodil → yellow#> ℹ azure → blue#> ℹ navy → blue#> ℹ violet → purple#> Warning: Some values of `x` were not matched in `thesaurus`:#> ✖ magenta#> [1] "yellow" "purple" "magenta" "blue" "blue" "purple"

control() also supports fuzzy matching, removing the need to exhaustively list variants for common causes of differing terminology. For example, to perform a case insensitive match to the thesaurus:

shades<- toupper(shades)
control_ci(shades, colour_thesaurus)
#> Replaced values:#> ℹ DAFFODIL → yellow#> ℹ PURPLE → purple#> ℹ AZURE → blue#> ℹ NAVY → blue#> ℹ VIOLET → purple#> Warning: Some values of `x` were not matched in `thesaurus`:#> ✖ MAGENTA#> [1] "yellow" "purple" "MAGENTA" "blue" "blue" "purple"

About

R package for controlled vocabularies

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages