
(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()șicontrol_fuzzy()pentru recodificarea valorilorcontrol_names(),control_names_ci()șicontrol_names_fuzzy()pentru recodificarea numelorcontrol_matches()pentru inspectarea modului în care s-au făcut potrivirileread_fish()pentru citirea vocabularelor în formatul FISH al Angliei istoricecolour_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.