controler: terminologie ordonată dezordonată în R cu vocabulare controlate

5
controler: terminologie ordonată dezordonată în R cu vocabulare controlate

(Acest articol a fost publicat pentru prima dată pe Joe Roeși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

controller este un pachet R pentru lucrul cu vocabulare controlate. Prima versiune (v0.1.0) este acum disponibilă acum pe CRAN.

Pachetul abordează ceva ce fac foarte des în codul de analiză: aranjarea terminologiilor dezordonate și inconsecvente. Pentru seturi de date mai mici, dplyr::recode() este în regulă pentru acest lucru, dar scrierea maparii ca un apel al funcției R devine rapid plictisitor atunci când aveți de-a face cu o listă lungă de termeni. Devine foarte plictisitor când ai variante care se disting doar prin lucruri precum scrierea cu majuscule (OxA- vs. oxa-), limitele cuvintelor (Çatalhöyük vs. Çatal Höyük) sau codificarea caracterelor (ʿAin Ghazal vs. ʽAyn Ghazal).

controlerul definește în schimb termenii preferați și variantele acestora într-un cadru de date. Sale control() verbul este echivalentul lui dplyr::recode() dar folosind acest tezaur și cu câteva clopote și fluiere suplimentare pentru potrivirea neclară și raportarea a ceea ce a fost (și nu a fost) schimbat:

library(controller)
data("colour_thesaurus")

shades <- c("daffodil", "purple", "magenta", "azure", "navy", "violet")
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

Potrivirea neclară înseamnă că nu trebuie să listăm exhaustiv acele variante din lucruri precum diferențele de majuscule, limitele cuvintelor sau codificarea caracterelor:

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

Pachetul ăsta a stat de ceva vreme! A început ca o funcție de ajutor pe care am folosit-o pentru a curăța numele site-urilor din siturile preistorice din Asia de Sud-Vest. Ideea de bază a fost inspirată de funcții similare care existau în c14bazAAR pentru curățarea metadatelor eșantioanelor pentru data cu radiocarbon, care mi s-au părut destul de îngrijite. Așa că, când menținătorii acelui pachet au decis să le deprecieze, am preluat tezaurile ca parte a c14 și am transformat funcțiile de suport în controler ca pachet independent. Apoi, de-a lungul anilor, a dobândit mai multe funcționalități pentru lucrul cu vocabulare controlate (un decalaj surprinzător în ecosistemul R), cum ar fi citirea vocabularelor de patrimoniu în formatul FISH al Angliei istorice. Cinci ani mai târziu, în sfârşit o să-l lansez pe CRAN pentru că trebuie să lansez c14 pe CRAN, deoarece asta e folosit în analizele pe care le public acum. Practic, este ingineria software de cercetare a schimbării unui bec.


Prima versiune a controlerului include:

  • control(), control_ci()și control_fuzzy() pentru recodificarea valorilor
  • control_names(), control_names_ci()și control_names_fuzzy() pentru recodificarea numelor
  • control_matches() pentru inspectarea modului în care s-au făcut potrivirile
  • read_fish() pentru citirea vocabularelor în formatul FISH al Angliei istorice
  • colour_thesaurusun exemplu de set de date

Îl puteți instala din CRAN:

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

Puteți găsi documentația completă la https://controller.joeroe.io.

NICIUN COMENTARIU

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.