(Acest articol a fost publicat pentru prima dată pe R pe kieranhealy.orgș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.
Săptămâna aceasta am petrecut puțin timp actualizându-mă gssrdoc puțin pentru a curăța modul în care arătau paginile de ajutor și pentru a aduce alte îmbunătățiri. În interiorul lui R, puteți spune, de exemplu, ?govdook la consolă și să apară acest pop-up în ajutor:

Da, govdook este prescurtarea pentru „Gov Do OK”, nu „Dook”.
Pachetul include si gss_docun cadru de date care conține toate informațiile din care sunt construite paginile de ajutor. L-am inclus pentru că poate fi util să lucrați direct, ca atunci când ați dori să extrageți informații rezumative despre un subset de variabile.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
library(tibble) library(gssrdoc) gss_doc #> # A tibble: 6,694 × 10 #> variable description question value_labels var_yrtab yrballot_df module_df subject_df norc_id norc_url #> |
The gss_doc obiectul are coloane obișnuite, dar și o serie de coloane de listă pentru (inserați meme aici, îl cunoașteți pe cel) pentru a pune cadre de date în cadrele de date. (Sunt etichetate ca „tibbles” aici; practic același lucru).
De ce o listă-coloană? De ce o listă? Ei bine, o listă este una dintre modalitățile fundamentale de a stoca date de orice fel. Listele sunt utile deoarece pot conține elemente eterogene:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
items <- list(
todo_home = c("Laundry", "Clean bathroom", "Feed cat", "Bring out rubbish bins"),
important_dates = as.Date(c("1776-07-04", "1788-06-21", "2025-01-18")),
keycode = 8675309,
storage_tiers = c(128, 256, 512, 1024)
)
items
#> $todo_home
#> (1) "Laundry" "Clean bathroom" "Feed cat" "Bring out rubbish bins"
#>
#> $important_dates
#> (1) "1776-07-04" "1788-06-21" "2025-01-18"
#>
#> $keycode
#> (1) 8675309
#>
#> $storage_tiers
#> (1) 128 256 512 1024
|
Un lucru de observat despre o listă ca aceasta este că nu are sens să o reprezinte ca un tabel. Acest lucru se datorează parțial pentru că elementele listei sunt de lungimi diferite, dar într-adevăr este pentru că dacă noi a făcut reprezentați-l ca un tabel, nu ar însemna nimic de citit pe rânduri:
1 2 3 4 5 6 7 8 |
items_df #> # A tibble: 4 × 4 #> todo_home important_dates keycode storage_tiers #> |
Rândurile nu formează „cazuri” de nimic. Avem doar patru categorii fără legătură cu diverse informații în ele.
Listele sunt, de asemenea, utile, deoarece se pretează ușor să fie imbricate:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
items <- list(
todo_home = list(
tasks = c("Laundry", "Clean bathroom", "Feed cat", "Bring out rubbish bins"),
tobuy = c("Cat Food", "Burritos"),
wifi_password = "p@ssw0rd!"
),
important_dates = as.Date(c("1776-07-04", "1788-06-21", "2025-01-18")),
keycode = 8675309,
storage_tiers = list(
ssd = c(128, 256, 512, 1024),
ram = c(1, 4, 8)
)
)
items
#> $todo_home
#> $todo_home$tasks
#> (1) "Laundry" "Clean bathroom" "Feed cat" "Bring out rubbish bins"
#>
#> $todo_home$tobuy
#> (1) "Cat Food" "Burritos"
#>
#> $todo_home$wifi_password
#> (1) "p@ssw0rd!"
#>
#>
#> $important_dates
#> (1) "1776-07-04" "1788-06-21" "2025-01-18"
#>
#> $keycode
#> (1) 8675309
#>
#> $storage_tiers
#> $storage_tiers$ssd
#> (1) 128 256 512 1024
#>
#> $storage_tiers$ram
#> (1) 1 4 8
|
În sensul său, R este un limbaj de procesare a listelor de tip LISP/Scheme, fuzionat cu caracteristici ale limbajelor matrice clasice, cum ar fi APL. Acest lucru se datorează faptului că, în lumea analizei datelor, cu ce ne ocupăm tot timpul sunt tabele dreptunghiulare sau tablouri, în care rândurile sunt cazuri și coloanele sunt diferite tipuri de variabile. Problema este că, spre deosebire de o serie frumoasă de numere pure, fiecare coloană ar putea măsura ceva (o dată, un răspuns Adevărat/Fals, o locație, un scor, o naționalitate) pe care am prefera să nu reprezentăm direct ca număr. Sigur, dedesubt în computer totul este doar unul și zero. (Sau mai degrabă, modele electromagnetice într-un substrat fizic pe care le putem interpreta ca semnificații de unu și zero.) Și dacă vrem să facem orice fel de analiză a datelor care implică tratarea tabelului nostru ca o matrice, atunci vom dori reprezentări numerice ale tuturor coloanelor. Dar pentru multe utilizări am dori să vedem „Franța” sau „Sunt de acord” în loc de „33” sau „5”. Doar un tabel de rânduri și coloane, unde diferite lucruri pot fi reprezentate pe coloane, dar orice coloană anume este tot același gen de lucru.
Un tabel dreptunghiular ca acesta se numește cadru de date. O modalitate de a gândi un cadru de date este doar ca un caz special al unei liste. Un cadru de date este o listă în care puteți pune toate elementele listei unul lângă altul și le puteți trata ca coloane și în care toate aceste elemente sunt formate din vectori de aceeași lungime. Dincolo de asta, este o listă în care al n-lea element al fiecărui vector se referă la o proprietate a aceleiași entități subiacente, adică lucrul care se află în rând sau caz; lucrul pe care coloanele vă arată măsurătorile sau proprietățile. Puteți avea intrări goale dacă este necesar, ca atunci când lipsesc o parte de date. Important este că fiecare coloană are atâtea sloturi câte cazuri sunt, iar valorile pentru fiecare caz sunt completate în același slot în fiecare coloană. Ori de câte ori vă uitați la orice tabel de date, una dintre primele întrebări ar trebui să fie întotdeauna „Ce este un rând din acest tabel?” În acest caz, fiecare rând este o variabilă din setul de date GSS complet și fiecare coloană descrie o proprietate a acelei variabile.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
library(tibble) library(gssrdoc) gss_doc #> # A tibble: 6,694 × 10 #> variable description question value_labels var_yrtab yrballot_df module_df subject_df norc_id norc_url #> |
Deoarece R a fost proiectat de statisticieni – R este un descendent al lui S, care, la fel ca orice altceva în calcul, își are originile în Bell Labs – are acest concept de cadru de date încorporat în nucleu în loc să fie înșurubat ulterior, ceea ce este extrem de util. În mod normal, cadrele de date sunt doar dreptunghiuri obișnuite, dar nu există niciun motiv pentru care o anumită coloană nu poate fi considerată ca o listă cu altceva. Asta avem aici. The yr_vartab coloana conține cadre de date ale tabelelor încrucișate ale răspunsurilor la fiecare întrebare pe an. Cu excepția cazului în care nu (de ex. pt id), și acest lucru este în regulă, deoarece listele nu trebuie să fie omogene intern. În mod similar yrballot_df are un mic tabel în care buletinele de vot sau părțile interne ale sondajului a fost pusă o întrebare pentru fiecare an în care a fost adresată.
Rezultatul este că după asamblarea gss_doc obiect pe care îl putem folosi pentru a emite, de exemplu, șapte mii de pagini de documentație despre multe, multe întrebări ale GSS de-a lungul anilor. Le putem construi ca pagini de ajutor R standardizate, ca mai sus. Pe site-ul care pgkdown construiește pentru noi, obținem asta:


Vizualizare site.
Referințele încrucișate la alte variabile relevante din secțiunea „Vezi și” sunt noi în această versiune. Vine datorită informațiilor proprii ale GSS despre modulele de anchetă și a unui index de subiecte ad-hoc pe care îl păstrează pentru variabile. Folosesc doar un subset de posibile referințe încrucișate, deoarece nu dorim, de exemplu, ca fiecare întrebare din nucleul GSS să fie încrucișată cu orice altă întrebare de bază de pe o anumită pagină de ajutor. Pe site, le adun într-o singură pagină:


Pagina de index al subiectului.
GSS are propriul său explorator de date la îndemână, care este foarte util pentru a verifica rapid anumite tendințe și pentru a obține un grafic rapid al modului în care arată datele sau o vedere rezumată a conținutului anumitor variabile. Fiecare pagină de ajutor în gssrdoc acum linkuri către pagina GSS Data Explorer pentru acea variabilă, în cazul în care doriți să săriți și să aruncați o privire acolo. Desigur, cel gssrdoc pachetul nu înlocuiește și nu este menit să înlocuiască Data Explorer; este doar o vedere diferită a aceleiași informații, cu un caz de utilizare diferit în minte.
