Radu Cosmin Limbajul R [609467]

UNIVERSITATEA DIN CRAIOVA
FACULTATEA ȘTIINȚE
SPECIALIZAREA INFORMATICĂ
LUCRARE DE LICENȚĂ

Îndrumător științific: Absolvent: [anonimizat]. univ. dr. Stoean Cătălin Radu Cosmin

CRAIOVA
2018

UNIVERSITATEA DIN CRAIOVA
FACULTATEA ȘTIINȚE
SPECIALIZAREA INFORMATICĂ
Reprezentare vizuală a
datelor pe hartă

Îndrumător științific: Absolvent: [anonimizat]. univ. dr. Stoean Cătălin Radu Cosmin

CRAIOVA
2018

Radu Cosmin Limbajul R

CUPRINS
INTRODUCERE…………………………………………………………………………………………………………….. ……..4
PARTEA I.
CAPITOLUL 1. LIMBAJUL R ……………………………………………………………………………………………….7
1.1 ISTORIC……………………………………………………………………………………………………………………………….. 7
1.2 INTERFEȚE……………………………………………………………………………………………………………………………..9
1.3 COMUNITATEA R ……………………………………………………………………………………………………………………..9
1.4 SUPORT COMERCIAL PENTRU R……………………………………………………………………………………………………. .10
1.5 LITERATURA DE SPECIALITATE R………………………………………………………………………………………………………………………………………………. 11
1.6 PRINCIPALELE UTILIZĂRI ȘI FUNCȚII ALE R-ULUI…………………………………………………………………………………………………………………… 13

CAPITOLUL 2. DATE ȘI REPREZENTĂRI GRAFICE ÎN R………………………………………………….18
2.1
2.2
2.3
2.4
2.5
PARTEA A II -A.
CAPITOLUL III.
3.1
3.2
3.3.
3.4.
3.5.
CONCLUZII
BIBLIOGRAFIE …………………………………………………………………………………………………………………………………..

Radu Cosmin Limbajul R
INTRODUCERE
Creșterea cantității de informații cauzată de evoluția tehnologică a readus
in actualitate reprezentarea vizuală a datelor adăugându-i valențe noi și solicitând
designerii mai mult ca niciodată. Trăim într-o societate în care comportamentul nostru
zilnic este analizat in cele mai mici detalii și care este înmagazinat ulterior în diferite
baze de date.Poate suna înfricoșător pentru unii,ciudat pentru alții dar probabil sunt si
unele efecte pozitive atât sociale cât și economice.
Rezultatul reprezentării vizuale a datelor constă in creații de genul
hărților,graficelor,infograficelor,histogramelor,diagramelor, acestea fiind imagini
aparent banale care cuprind cantități impresionante de date.
Suntem puși astfel in situația de a putea accesa o multitudine de date dar și a
putea să le stocăm și să le prelucrăm cu o mulțime de metode.Abia atunci când se
încheie analizarea si interpretarea datelor,dupa evaluarea,împărțirea și categorisirea
acestora, se poate trece la reprezentarea vizuală a acestora. Astfel se va ajunge de la o
cantitate mare de date la un mesaj simplu,inteligibil,ușor de urmărit chiar și de o
persoană neavizată.
Lucrarea de față își propune studiul reprezentării vizuale a datelor pe hartă
cu ajutorul limbajului R.
De ce limbajul R?
➢R este gratuit și open source.
➢Pachete numeroase ( mai mult de 11000 pachete R) pentru :
– geostatistică , mutarea datelor
– econometrie ,modelare statistică
– vizualizare , machine learning și altele .
➢ Reproductibilitate: analizele pot fi reproduse si verificate.
➢ O comunitate mare: milioane de utilizatori în lumea întreagă.

Radu Cosmin Limbajul R
În mod obișnuit un ciclu de viață al analizelor de date cuprinde următoarele
etape:
➢ Obținerea datelor
➢ Pregătirea datelor
➢ Explorarea datelor
➢ Vizualizarea datelor
Privind retrospectiv la evoluția limbajului R, referitor la analiza datelor și re-
prezentarea acestora se poate remarca anul 2003 ca o dată de referință din acest punct de
vedere.
Înainte de 2003:
➢Existau numeroase pachete pentru date spațiale care făceau diferite pre-
supuneri despre cum aceste date erau organizate.
➢ Limbajul R personal nu avea capacitatea de a face distincția între coor-
donate și alte numere.
➢ Metodele pentru reprezentarea grafică si alte cerințe erau risipite, se fă-
ceau diferite presupuneri asupra organizării datelor și erau rudimentare.
În 2003:
➢Un grup al dezvoltatorilor limbajului R s-au întâlnit și au scris împreună
pachetul R "sp" pentru a extinde R cu clase și metode pentru date spațiale.
➢Clasele specifică o structură și definesc cum datele spațiale sunt
organizate și stocate.
➢Metodele sunt instanțe ale funcțiilor specializate pentru o clasă
particulară de date.
Prin utilizarea unui singur set de clase apar numeroase avantaje cum ar fi:
1.Devine mai simplă mutarea datelor între pachetele statistice.
2.Oferă un set de metode și funcții foarte bine testate pentru reprezentarea grafică ,
printarea ,
subsetarea și sumarizarea obiectelor spațiale.
3.Asigură pachete cu interfață pentru GIS ,pentru citirea și scrierea fișierelor în format
GIS și pentru coordonarea proiectărilor și reproiectărilor.
4.Oferă metode de reprezentare grafică care combină diferite tipuri de date spațiale cu

Radu Cosmin Limbajul R
diferite elemente de hartă cum ar fi grile de referință, grafice de bare, grafice săgeți etc.
În multitudinea de pachete oferite de limbajul R regăsim și cele mai impor-
tante pachete utilizate pentru analizarea datelor spațiale și reprezentarea grafică a aces-
tora.Iată mai jos câteva dintre acestea:
➢sp: Asigură clase și metode pentru date spațiale.
➢rgdal: Importă și exportă formate de date geospațiale.
➢rgeos: Pentru rezolvarea operațiilor cu topologii.
➢tmap: Pentru crearea hărților tematice.
➢ggplot2 : Pentru vizualizarea datelor.
➢ggmap : Au la bază hărți ca de exemplu Google Maps, Open Street Maps.
➢leaflet : Pentru hărți interactive în cadrul R.
➢raster : Lucrul cu date raster.
➢gstat : Modelare geostatistică.

.

Radu Cosmin Limbajul R

CAPITOLUL 1. LIMBAJUL R
1.1 Istoric
R este un sistem pentru analize statistice și grafice creat de către Ross Ihaka și
Robert Gentleman 1.R este în egală măsură software și limbaj considerat a fi un dialect
al limbajului S creat de către AT&T Bell Laboratories.Există diferențe importante între
designul R-ului și al S-ului : cei care doresc sa afle mai multe despre acest aspect pot
citi articolul scris de către Ihaka & Gentleman (1996) sau R-FAQ 2 , o copie a acestuia
fiind integrată în R.
R este distribuit in mod gratuit sub licența GNU General Public License 3
dezvoltarea precum și distribuția lui fiind în grija câtorva statisticieni cunoscuți sub
denumirea generică de R Development Core Team .
R este disponibil sub câteva forme : sursele (dezvoltate în special în C și
proceduri în Fortran), esențiale pentru Unix și Linux sau câteva fișiere binare
predefinite pentru Windows, Linux și Macintosh.
Fișierele necesare pentru instalarea R, fie din surse sau din fișiere binare
predefinite sunt distribuite pe site-ul Comprehensive R Archive Network (CRAN) 4 unde
se gasesc și instrucțiunile pentru instalare.În ceea ce privește variantele de
Linux(Debian…), fișierele binare sunt în general disponibile pentru majoritatea
versiunilor,căutați pe site-ul CRAN dacă este necesar.
R are o mulțime de funcții pentru analiza statistică si grafică; cele recente au
vizualizare instantanee în propria fereastră și pot fi salvate în diferite formate (jpg, png,
1Ihaka R. & Gentleman R. 1996.R : a language for data analysis and graphics. Journal of Computational and
Graphical Statistics 5: 299-314.
2https://cran.r-project.org/doc/FAQ/R-FAQ.html
3http://www.gnu.org/
4https://cran.r-project.org/

Radu Cosmin Limbajul R
bmp, ps, pdf, emf, pictex, xfig; formatele disponibile pot depinde de sistemul de ope-
rare).
Rezultatele unei analize statistice sunt afișate pe ecran, câteva rezultate inter-
mediare (probabilități, coeficienți de regresie,valori reziduale, . . . ) pot fi salvate, scrise
într-un fișier sau folosite în analize ulterioare.
Limbajul R este utilizat pe scară largă în rândul statisticienilor și minerilor
de date pentru dezvoltarea software-ului statistic și pentru analiza datelor . Sondajele
despre minerii de date și studiile de baze de date ale literaturii științifice arată că popu-
laritatea lui R a crescut substanțial în ultimii ani.
În aprilie 2018, R se situează pe locul 12 în indicele TIOBE 5, o măsură a
popularității limbajelor de programare.
O listă a modificărilor în versiunile R este menținută în diferite fișiere de
știri de la CRAN. Unele aspecte importante sunt enumerate mai jos pentru mai multe
versiuni importante.
Apariție Data Descriere
0.16 Aceasta este ultima versiune alfa dezvoltată în primul rând
de Ihaka și Gentleman. O mare parte din funcționalitatea
de bază din "Cartea Albă" (vezi istoria S) a fost
implementată. Listele de discuții au început la 1 aprilie
1997.
0.49 1997-04-23 Aceasta este cea mai veche versiune de sursă disponibilă în
prezent pe CRAN. CRAN este începută la această dată, cu
3 oglinzi, care inițial găzduiau 12 pachete. Versiunile alfa
ale lui R pentru Microsoft Windows și sistemul clasic Mac
OS sunt puse la dispoziție la scurt timp după această
versiune.
0.60 1997-12-05 R devine o parte oficială a proiectului GNU. Codul este
găzduit și menținut pe CVS.
0.65.1 1999-10-07 Primele versiuni ale pachetelor update.packages și
install.packages pentru descărcarea și instalarea pachetelor
de la CRAN.
1.0 2000-02-29 Considerat de dezvoltatorii săi suficient de stabil pentru
utilizarea în producție.
1.4 2001-12-19 Metodele S4 sunt introduse și prima versiune pentru Mac
5https://www.tiobe.com/tiobe-index/

Radu Cosmin Limbajul R
OS X este disponibilă în curând.
2.0 2004-10-04 Introducerea de încărcare leneșă, care permite încărcarea
rapidă a datelor cu cheltuieli minime ale memoriei
sistemului.
2.1 2005-04-18 Suport pentru codificarea UTF-8 și începutul
internaționalizării și localizării pentru diferite limbi.
2.11 22.04.10Suport pentru sistemele Windows pe 64 biți.
2.13 2011-04-14 Adăugarea unei noi funcții de compilator care permite
accelerarea funcțiilor prin transformarea acestora în codul
octet.
2.14 2011-10-31 Au fost adăugate spații de nume obligatorii pentru pachete.
A fost dăugat un nou pachet paralel.
2.15 2012-03-30 Noi funcții de echilibrare a sarcinii. S-a îmbunătățit viteza
de serializare pentru vectorii lungi.
3.0 2013-04-03 Suport pentru valorile indexului numeric 2^ 31 și mai mare
pentru sistemele pe 64 de biți.
1.2 Interfețe
Cel mai frecvent utilizat mediu de dezvoltare integrat grafic pentru R este
Rstudio 6.O interfață similară de dezvoltare este R Tools for Visual Studio.
Interfețele cu mai multă abordare punct și clic includ GUI Rattle, Commander
R și RKWard.
Unii dintre cei mai comuni editori cu diferite nivele de suport pentru R includ
Eclipse, Emacs (Emacs Speaks Statistics), Kate, LyX, Notepad ++, WinEdt și Tinn-R.
R este accesibil din mai multe limbi de scriere, cum ar fi Python, Perl, Ruby,
F # și Julia 7.

1.3 Comunitatea R
Întâlnirea anuală oficială a utilizatorilor R se numește "useR!" 8.Primul eveni-
ment a fost useR! 2004 în mai 2004, Viena, Austria. După ce în 2005 nu s-a mai desfă-
6https://commons.wikimedia.org/wiki/File:Rstudio.png#/media/File:Rstudio.png
7https://en.wikipedia.org/wiki/R_(programming_language)
8https://www.r-project.org/conferences.html

Radu Cosmin Limbajul R
șurat conferința useR! a avut loc anual, alternând de obicei între locații din Europa și
America de Nord . Conferințele ulterioare au inclus:
•useR! 2006, Vienna, Austria
•useR! 2007, Ames, Iowa, USA
•useR! 2008, Dortmund, Germania
•useR! 2009, Rennes, Franța
•useR! 2010, Gaithersburg, Maryland, USA
•useR! 2011, Coventry, Marea Britanie
•useR! 2012, Nashville, Tennessee, USA
•useR! 2013, Albacete, Spania
•useR! 2014, Los Angeles, California, USA
•useR! 2015, Aalborg, Danemarca
•useR! 2016, Stanford, California, USA
•useR! 2017, Brussels, Belgia
Următoarele conferințe sunt planificate după cum urmează :
•useR! 2018, Brisbane, Australia
•useR! 2019, Toulouse, Franța
•useR! 2020, Boston, Massachusetts, USA

1.4 Suport comercial pentru R
Deși R este un proiect cu sursă deschisă, susținut de comunitatea în curs de
dezvoltare, unele companii se străduiesc să furnizeze clienților lor sprijin comercial și /
sau extensii. Această secțiune oferă câteva exemple de astfel de companii.
În 2007, Richard Schultz, Martin Schultz, Steve Weston și Kirk Mettler au
înființat Revolution Analytics pentru a oferi sprijin comercial pentru Revolution R,
distribuția lor de R, care include și componente dezvoltate de companie. Principalele

Radu Cosmin Limbajul R
componente suplimentare includ: ParallelR, ID Productivitate Mediu, RevoScaleR
(pentru analiza datelor mari), RevoDeployR, cadru de servicii web și abilitatea de a citi
și scrie date în formatul de fișier SAS 9.Revolution Analytics oferă, de asemenea, o
distribuție de R concepută pentru a respecta criteriile stabilite IQ / OQ / PQ, care
permite clienților din sectorul farmaceutic să valideze instalarea lor de REvolution R.
În 2015, Microsoft Corporation a încheiat achiziția Revolution Analytics și a integrat
limbajul de programare R în Visual Studio 2017 10.
În octombrie 2011, Oracle a anunțat Big Data Appliance, care integrează R,
Apache Hadoop, Oracle Linux și o bază de date NoSQL cu hardware Exadata . Înce-
pând cu anul 2012, Oracle R Enterprise a devenit una dintre cele două componente ale
opțiunii "Oracle Advanced Analytics Option" (alături de Oracle Data Mining) 11.
IBM oferă suport pentru execuția in-Hadoop a R și oferă un model de progra-
mare pentru analiza bazelor de date paralele masive în R 12.
Alte sisteme comerciale majore care susțin conexiunile sau integrarea cu R
includ: JMP, Mathematica, MATLAB, Microsoft Power BI, Pentaho, Spotfire, Statis-
tica, Platforma Simfonia, SAS, Tableau Software, Esri ArcGis, Dundas și Statgraphics.
Tibco oferă o versiune runtime R ca parte a Spotfire.
Mango oferă un pachet de validare pentru R, ValidR , pentru a-l face conform
cu agențiile de aprobare a medicamentelor, cum ar fi FDA. Aceste agenții permit folosi-
rea oricărui software statistic în prezentări, dacă numai software-ul este validat, fie de
către vânzător, fie de sponsorul însuși 13.
1.5 Literatura de specialitate R

➢ Manuale. Câteva manuale sunt integrate în R_HOME/doc/manual/ :
– An Introduction to R [R-intro .pdf],
– R Installation and Administration [R-admin .pdf],
– R Data Import/Export [R-data .pdf],
9 Morgan, Timothy Prickett (2011-02-07). "'Red Hat for stats' goes toe-to-toe with SAS". The Register, 7 February
2011.
10https://blogs.msdn.microsoft.com/visualstudio/2016/03/22/introducing-r-tools-for-visual-studio-3/
11Doug Henschen (2012); Oracle Stakes Claim in R With Advanced Analytics Launch , InformationWeek, April 4, 2012.
12http://mainline.com/_web/_shared/pdfs/brochures/IBM-PureData-System-Overview.pdf
13https://en.wikipedia.org/wiki/R_(programming_language)

Radu Cosmin Limbajul R
– Writing R Extensions [R-exts .pdf],
– R Language Definition [R-lang.pdf].
Fișierele pot fi în formate diferite (pdf,html,…) în funcție de tipul
instalării.
• FAQ. R este distribuit și cu secțiunea FAQ ( Frequently Asked Ques-
tions) localizată în folderul R_HOME/doc/html/.O versiune a R-FAQ este în mod regu-
lat actualizată pe site-ul CRAN :
https://cran.r-project.org/doc/FAQ/R-FAQ.html
➢Resurse on-line. Site-ul CRAN Web găzduiește câteva documente re-
surse bibliografice și linkuri către alte site-uri.Există și o listă de publicații (cărți și ar-
ticole) despre R sau metode statistice 14 și câteva documente și tutoriale scrise de către
utilizatorii R 15 .
➢Liste de adrese. Există patru liste de discuții despre R;pentru a vă abona,a
trimite un mesaj , sau a citi arhivele accesați: http://www.r-project.org/mail.html . Lista
generală de discuții 'r-help' este o sursă interesantă de informații pentru utilizatorii R(ce-
lelalte trei liste sunt dedicate anunțărilor de noi versiuni și sunt pentru dezvoltatori).
Mulți utilizatori au trimis către 'r-help' funcții sau programe care pot fi găsite în arhive.
Dacă întâmpinați o problemă în R, este important să parcurgeți următorii pași înainte de
a trimite un mesaj către 'r-help' :
1. citiți cu atenție suportul on-line (utilizând motorul de căutare) ;
2. citiți R-FAQ ;
3. căutați în arhivele 'r-help' la adresa mai sus menționată , sau utilizând unul din-
tre motoarele de căutare dezvoltate pe câteva site-uri 16 ;
4. citiți "ghidul de postare" 17 înainte de a trimite o întrebare.
➢ R News. Jurnalul electronic R News își propune să fie o punte de legătură
între listele de discuții electronice și publicațiile științifice tradiționale.Prima ediție a fost
publicată în ianuarie 2001 18.
➢Citarea R intr-o publicație . Dacă doriți să faceți referire către R într-o pu-
blicație , trebuie să citați următoarea referință:
14http://www.r-project.org/doc/bib/R-publications.html
15http://cran.r-project.org/other-docs.html
16Adresele acestor site-uri sunt enumerate la http://cran.r-project.org/search.html
17http://www.r-project.org/posting-guide.html
18http://cran.r-project.org/doc/Rnews/

Radu Cosmin Limbajul R
R Development Core Team (2005). R: A language and environment
for statistical computing . R Foundation for Statistical Computing ,
Vienna , Austria . ISBN 3-900051-07-0 , URL: http://www.R-project.org.

1.6 Principalele utilizări și funcții ale R-ului

Există o gamă enormă de lucruri pe care R le poate face și una dintre cele mai
grele părți ale învățării R este să îți găsești drumul in acest domeniu.Iată în mare dife-
rite componente esențiale ale limbajului R :
•Calcule
•Operații logice
•Secvențe
•Testarea și corectarea
•Valorile lipsă și lucrurile care nu sunt numere
•Vectori și indicatori
•Funcții vectorizate
•Matrice și șiruri
•Prelevarea de probe
•Buclele și repetările
•Liste
•Textul, șirurile de caractere și potrivirea tiparelor
•Datele și orele
•Mediile
•Scrierea funcțiilor R
•Scrierea în dosar din R
•Introducerea datelor
•Structuri de date

Radu Cosmin Limbajul R
•Grafice 19.
Funcții matematice folosite în R :
•log(x) – Logaritm în baza e din x
•exp(x) – Antilogaritm din x(e^x)
•log(x,n) – Logaritm în baza n din x
•log10(x) – Logaritm în baza 10 din x
•sqrt(x) – Rădăcină pătrată din x
•factorial(x) – x! = x × (x − 1) × (x − 2)×・ ・ ・×3 × 2
•choose(n,x) – Coeficienții binomiali ai n!/(x! (n – x)!)
•gamma(x) – Funcția gamma
•lgamma(x) – Logaritm natural din gamma
•floor(x) – Cel mai mare întreg mai mic decât x
•ceiling(x) – Cel mai mic întreg mai mare decât x
•trunc(x) – Cel mai apropiat număr întreg de x între x și 0, de ex.
trunc (1.5) = 1, trunc (-1,5) = -1;trunc este ca podea
pentru valori pozitive și ca plafon pentru valori negative
•round(x, digits=0) – Rotunjește valoarea lui x la un întreg
•signif(x, digits=6) – Rotunjește valoarea lui x la 6 zecimale
•runif(n) – Generează n numere aleatorii între 0 și 1 dintr-o distribuție
uniformă
•cos(x) – Funcție trigonometrică directă
•sin(x) – Funcție trigonometrică directă
•tan(x) – Funcție trigonometrică directă
•acos(x), asin(x), – Funcții trigonometrice inverse
•atan(x) – Funcție trigonometrică inversă
•acosh(x), asinh(x), – Inverse transformări hiperbolice trigonometrice ale unor
numere reale sau complexe
•atanh(x) – Inversă transformare hiperbolică trigonometrică a unor
numere reale sau complexe
19Michael J. Crawley.The R Book, Second Edition.© 2013 John Wiley & Sons, Ltd. Published 2013 byJohnWiley
& Sons, Ltd. Pag. 12

Radu Cosmin Limbajul R
•abs(x) – Valoarea absolută a lui x, ignorând semnul minus dacă există
unul 20.
Pe lângă aceste funcții matematice Robert I. Kabacoff 21 amintește și despre o
serie de funcții statistice cum ar fi :
•mean(x) – Media
mean(c(1,2,3,4)) returnează 2,5.
•median(x) – Mediana
median(c(1,2,3,4)) returnează 2,5.
•sd(x) -Deviație standard
sd (c (1,2,3,4)) returnează 1,29.
•var(x) -Varianța
var (c (1,2,3,4)) returnează 1,67.
•mad(x) -Abaterea absolută medie
mad (c (1,2,3,4)) returnează 1,48.
•quantile(x,probs) – Quantilele
Se determină cuantilele din vectorul de probabilitați
probs(cu probabilități în [0,1]) pentru datele numerice
din x.
# 30th and 84th percentiles of x
y <- quantile(x, c(.3,.84)).
•range(x) – Intervalul [minim, maxim]
x <- c (1,2,3,4)
range (x) returnează c (1,4).
diff (range (x)) returnează 3.
• sum(x) – Suma
sum (c (1,2,3,4)) returnează 10.
• diff(x, lag=n) -Diferențe decalate, cu o întârziere care indică decalajul care
trebuie utilizat.Valoarea implicită a decalajului este 1.
20Michael J. Crawley.The R Book, Second Edition.© 2013 John Wiley & Sons, Ltd. Published 2013 by John Wiley
& Sons, Ltd. pag. 17
21 Robert I. Kabacoff ,R in Action,Second Edition ,Data analysis and graphics with R © 2015 Manning Publications
pag.94-95

Radu Cosmin Limbajul R
x <- c (1, 5, 23, 29)
diff (x) returnează c (4, 18, 6).
• min(x) – Minimul
min(c(1,2,3,4)) returnează 1.
• max(x) – Maximul
max(c(1,2,3,4)) returnează 4
•scale(x, – Centrul de coloane (centru = TRUE) sau standardizați
center=TRUE, (centru = TRUE,scale = TRUE) obiect de date x.
scale= TRUE)
•cov(x,y=NULL, – Covarianța vectorilor x și y sau a matricei ori
use="everything", data.frame x (în acest caz se face covarianță între
method="kendall") coloane). Parametrul method poate fi "pearson",
"kendall", "spearman".
•cor(x,y=NULL,use – Coeficientul de corelație al vectorilor x și y sau a
="everything",method matricei ori data.frame x (în acest caz se face
="kendall") corelația între coloane). Parametrul method poate fi
"pearson", "kendall", "spearman" .
•summary(obiect,…) – Este o funcție generică al cărei rezultat depinde de
obiectul căreia i se aplică. Pentru un vector numeric se
dau minimul, maximul, media, mediana, prima și a
treia cvartilă. Pentru o matrice sau data frame se face
același lucru pentru coloane.
Iată un exemplu de vector numeric x mai jos căruia i se cere un sumar al
caracteristicilor statistice elementare.
> x<-c(1,3,-1,7,6,10,8,5,-3,9,7,4,2)
> summary(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.

-3.000 2.000 5.000 4.462 7.000 10.000

Alte funcții vectoriale mai sunt precizate de către Michael J. Crawley 22:
•sort(x) – o versiune sortată de x
•rank(x) – vector al rangurilor valorilor în x
22Michael J. Crawley.The R Book, Second Edition.© 2013 John Wiley & Sons, Ltd. Published 2013 by John Wiley
& Sons, Ltd. pag. 41

Radu Cosmin Limbajul R
•order(x) – un vector de numere întregi care conține permutarea pentru a sorta x

în ordine ascendentă .
•cumsum(x) – vector care conține suma tuturor elementelor până la acel moment .
•cumprod(x) – vector conținând produsul tuturor elementelor până la acest punct.
•cummax(x) – vector de numere non-descrescătoare, care sunt maximele cumulative
ale valorilor în x până la acest punct.
•cummin(x) – vector de numere non-crescătoare, care sunt minime cumulative ale
valorilor în x până la acest punct.
•pmax(x,y,z) – vector, cu lungimea egală cu cea mai lungă dintre x, y sau z, care
conține maximul lui x, y sau z pentru/ în fiecare poziție.
•pmin(x,y,z) – vector, cu lungimea egală cu cea mai lungă dintre x, y sau z, care
conține minimul lui x, y sau z pentru/ în fiecare poziție.
•colMeans(x) – media pe coloană a cadrului de date sau matricei x.
•colSums(x) – suma pe coloană a cadrului de date sau matricei x.
•rowMeans(x) – media pe rând a cadrului de date sau matricei x.
•rowSums(x) – suma pe rând a cadrului de date sau matricei x.

Radu Cosmin Limbajul R

CAPITOLUL 2. DATE ȘI
REPREZENTĂRI GRAFICE ÎN R
2.1 Tipuri de date în R
Entitățile cu care operează R pentru a memora și a lucra cu date se numesc tipuri de
date sau obiecte. Acestea pot fi: scalari, vectori, matrice, liste, tablouri, șiruri de caractere,
factori, dataframe-urile, etc. De asemenea, se pot defini tipuri noi de obiecte.
Funcția typeof(obiect) sau echivalent mode(obiect) pot fi folosite pentru a afla tipul
atributelor intriseci ale unui obiect. Câteva dintre cele mai des folosite tipuri de obiecte:
"numeric" (întreg="integer" sau real="double"), "complex", "logical" (logic), "character"
(caracter) sau "raw" (vector de biți, fiecare componentă a acestuia fiind reprezentată separat
ca pereche de cifre hexazecimale). De exemplu: 23
> x=3.2 > s="unu" >s="sir"
> typeof(x) > typeof(x) > b=charToRaw(s);b
[1] "numeric" [1] "character" [1] 73 69 72
> typeof(b)
> x=1+2i > e=1<3 [1] "raw"
[1] "complex" [1] "logical"
Accesul la obiecte se face prin intermediul unor simboluri numite variabile. În
R, variabilele sunt ele însele obiecte și pot fi manipulate în același mod ca și obiectele.
Numele variabilele din R încep cu o literă, apoi pot conține litere, cifre, „.” sau ”_”.
Pentru a atribui o valoare unei variabile se poate folosi operatorul de atribuire („=” sau
„<–” sau „<<-„ sau „->” sau „->>”) sau se poate folosi funcția assign din pachetul de
programe R „base”:
> variabila = valoare
> variabila <- valoare
> variabila <<- valoare
> valoare -> variabila
23http://www.edumanager.ro/community/documente/initiere_in_r.pdf pag.11

Radu Cosmin Limbajul R
> valoare ->> variabila
> assign("variabila”,valoare)
Afișarea valorii unei variabile se face explicit, prin apelarea numelui variabilei
sau prin folosirea funcției print. De exemplu:
> x=1.5
> x
[1] 1.5
> print(x)
[1] 1.5
La afișarea valorilor variabilelor se poate folosi funcția options(nume=valoare)
pentru a stabili diverse opțiuni. De exemplu, pentru a stabili numărul de zecimale la 2
se apelează înainte de afișare: options(digits=2). Valorile valide sunt 1..22 cu valoarea
implicită 7. Însă acest număr de zecimale este doar sugestie. De exemplu:
> options(digits=5)
> x=1.3
> x
[1] 1.3
> y=1/3; y
[1] 0.33333 24.
De departe, cea mai importantă structură de date R folosită în procesul de învă-
țare automată sunt datele cadru (data frames) , o structură analogă cu o foaie de calcul
sau cu o bază de date, deoarece are atât rânduri, cât și coloane de date. În termenii R,
un cadru de date poate fi înțeles ca o listă de vectori sau factori, fiecare având exact
același număr de valori. Deoarece cadrul de date este literalmente o listă de vectori,
combină aspecte ale vectorilor și ale listelor.
Să creăm un cadru de date pentru setul de date pacient. Folosind vectorii de
date pentru pacient, pe care noi i-am creat anterior , funcția data.frame () îi combină
într-un cadru de date:
> pt_data <- data.frame(subject_name, temperature, flu_status,
gender, blood, stringsAsFactors = FALSE)
S-ar putea să observați ceva nou în codul precedent; am inclus un parametru
suplimentar stringsAsFactors = FALSE.Dacă nu specificăm această opțiune, R va con-
verti automat fiecare vector de caractere la un factor; aceasta este o caracteristică care
24http://www.edumanager.ro/community/documente/initiere_in_r.pdf pag.12

Radu Cosmin Limbajul R
este uneori utilă, dar uneori este excesivă.Aici, de exemplu,field_name nu este categoric
o dată; numele nu sunt categorii de valori. Așadar, setarea opțiunii stringsAsFactors la
FALSE ne permite să convertim la factori numai acolo unde are sens pentru proiect.
Când afișăm cadrul de date pt_data, vedem că structura este destul de diferită
de structurile de date cu care am lucrat anterior:25
> pt_data
subject_name temperature flu_status gender blood
1 John Doe 98.1 FALSE MALE O
2 Jane Doe 98.6 FALSE FEMALE AB
3 Steve Graves 101.4 TRUE MALE A
În comparație cu vectorii, factorii și listele unidimensionale, un cadru de date
are două dimensiuni și, prin urmare, este afișat în format matrice. Cadrul de date are o
coloană pentru fiecare vector de date pacient și un rând pentru fiecare pacient. În con-
dițiile de învățare a mașinilor, coloanele sunt caracteristicile sau atributele și rândurile
sunt exemplele.
Pentru a extrage întregi coloane (vectori) de date, putem profita de faptul că un
cadru de date este pur și simplu o listă de vectori. Similar cu listele, cea mai directă
modalitate de extragere a unui singur element, în acest caz un vector sau o coloană de
date, este să ne referim la el prin numele său.De exemplu, pentru a obține vectorul
subject_name, tastați:
> pt_data$subject_name
[1] "John Doe" "Jane Doe" "Steve Graves"
De asemenea, similar cu listele, un vector de nume poate fi folosit pentru a
extrage mai multe coloane dintr-un cadru de date:
> pt_data[c("temperature", "flu_status")]
temperature flu_status
1 98.1 FALSE
2 98.6 FALSE
3 101.4 TRUE
Când accesăm cadrul de date în acest fel, rezultatul este un cadru de date care
conține toate rândurile de date pentru coloanele solicitate. De asemenea, puteți intro-
duce pt_data [2: 3] ca să extrageți coloanele temperature și flu_status, dar listarea coloa-
nelor după nume face să fie codul R clar și ușor de întreținut.
Pentru a extrage valori în cadrul de date, putem folosi metode ca cele pe care
25Lantz Brett Machine Learning with R , Second Edition,Birmingham,Packt Publishing Ltd,July 2015,pag.35

Radu Cosmin Limbajul R
le-am învățat pentru accesarea valorilor în vectori, cu o excepție importantă : deoarece
cadrul de date este bidimensional, va trebui să specificați poziția atât a rândurilor, cât și
a coloanelor pe care ați dori să le extrageți. Rândurile sunt specificate mai întâi, urmate
de o virgulă, urmată de coloanele într-un format ca acesta: [rânduri, coloane], pornind
de la numărul 1.
De exemplu, pentru a extrage valoarea din primul rând și a doua coloană a
pacientului din cadrul de date (valoarea temperaturii pentru John Doe), introduceți:
> pt_data[1, 2]
[1] 98.1
Dacă doriți mai mult de un rând sau o coloană de date, acest lucru se poate
face specificând vectorii pentru numerele de rând și coloane pe care le doriți. Următoa-
rele instrucțiuni vor extrage date din rândurile 1 și 3 și din coloanele 2 și 4:
> pt_data[c(1, 3), c(2, 4)]
temperature gender
1 98.1 MALE
3 101.4 MALE
Pentru a extrage toate rândurile sau coloanele, în loc de a le lista pe fiecare
pur și simplu se lasă necompletat rândul sau coloana .De exemplu, pentru a extrage toa-
te rândurile din prima coloană:
> pt_data[, 1]
[1] "John Doe" "Jane Doe" "Steve Graves"
Pentru a extrage toate coloanele pentru primul rând:
> pt_data[1, ]
subject_name temperature flu_status gender blood
1 John Doe 98.1 FALSE MALE O

Și pentru a extrage tot :
> pt_data[ , ]
subject_name temperature flu_status gender blood

1 John Doe 98.1 FALSE MALE O
2 Jane Doe 98.6 FALSE FEMALE AB
3 Steve Graves 101.4 TRUE MALE A
Metodele pe care le-am învățat pentru accesarea valorilor în liste și vectori pot
fi de asemenea utilizate pentru recuperarea rândurilor și coloanelor cadrului de date. De
exemplu, pot fi coloane accesate mai degrabă prin nume decât prin poziție, iar semnele
negative pot fi folosite pentru a exclude rânduri sau coloane de date. Prin urmare,decla-
rația:

Radu Cosmin Limbajul R
> pt_data[c(1, 3), c("temperature", "gender")]
Este echivalentă cu :
> pt_data[-2, c(-1, -3, -5)]

2.2 Gestionarea datelor în R

Una dintre provocările cu care se confruntă atunci când se lucrează cu seturi de
date masive implică strângerea, pregătirea și gestionarea în alt mod a datelor dintr-o
varietate de surse. Această sarcină este facilitată de instrumentele R pentru încărcarea
datelor din mai multe formate comune.
Când ați petrecut mult timp pentru a obține un anumit cadru de date în formatul
pe care îl doriți, nu ar trebui să vă recreați lucrarea de fiecare dată când reporniți o sesi-
une R. Pentru a salva o anumită structură de date într-un fișier care poate fi reîncărcat
ulterior sau transferat în alt sistem, puteți utiliza funcția save(). Funcția save() scrie
structurile de date R în locația specificată de parametrul fișierului.Fișierele de date R
au extensia de fișier .Rdata.
Dacă am avea trei obiecte numite x, y și z, am putea să le salvăm într-un fișier
mydata.RData utilizând următoarea comandă:
> save(x, y, z, file = "mydata.RData")
Indiferent dacă x, y și z sunt vectori, factori, liste sau cadre de date, vor fi sal-
vate în fișier.
Comanda load () va recrea toate structurile de date deja salvate la un fișier
.RData. Pentru a încărca fișierul mydata.RData pe care l-am salvat în codul precedent,
pur și simplu tastați:
> load("mydata.RData")
Aceasta va recrea structurile de date x, y și z.
Dacă aveți nevoie să încheiați o sesiune R în grabă, comanda save.image() va
scrie întreaga sesiune într-un fișier numit pur și simplu .RData. În mod implicit, R va că-
uta acest fișier data viitoare când începeți R, iar sesiunea dvs. Va fi recreată la fel cum
dumneavoastră ați părăsit-o. 26
2.2.1 Importarea și salvarea datelor din fișierele CSV
26Lantz Brett Machine Learning with R , Second Edition,Birmingham,Packt Publishing Ltd,July 2015,pag.39

Radu Cosmin Limbajul R
Este foarte frecvent ca datele public disponibile să fie stocate în fișiere text.
Fișierele text pot fi citite pe orice calculator sau sistem de operare, făcând formatul
aproape universal. Ele pot fi, de asemenea, exportate și importate din / în programe
precum Microsoft Excel, oferind o modalitate rapidă și ușoară de a lucra cu datele de
calcul tabelar.
Un fișier de date tabular (ca în "tabel") este structurat în formă de matrice,
astfel încât fiecare linia de text reflectă un exemplu și fiecare exemplu are același număr
de caracteristici.Valorile caracteristicilor de pe fiecare linie sunt separate printr-un sim-
bol predefinit cunoscut sub numele de delimitator. Adesea, prima linie a unui fișier de
date tabular listează numele coloanelor dinn date. Aceasta se numește linia de antet.
Poate cel mai frecvent format de fișier text tabular este CSV(Comma-Sepa-
rated Values), care, după cum sugerează și numele, utilizează virgula ca delimitator.
Fișierele CSV pot fi importate și exportate din multe aplicații comune. Un fișier CSV
reprezentând setul de date medicale construit anterior ar arăta astfel:27
subject_name,temperature,flu_status,gender,blood_type
John Doe,98.1,FALSE,MALE,O
Jane Doe,98.6,FALSE,FEMALE,AB
Steve Graves,101.4,TRUE,MALE,A
Pentru a încărca acest fișier CSV în R, read.csv () este folosit după cum urmează:
> pt_data <- read.csv("pt_data.csv", stringsAsFactors = FALSE)
Având în vedere un fișier de date pacient numit pt_data.csv localizat în
directorul de lucru R,aceasta va citi fișierul CSV într-un cadru de date intitulat pt_data.
Așa cum am făcut înainte pentru a construi un cadru de date, trebuie să folosim
stringsAsFactors= FALSE pentru a împiedica R să transforme toate variabilele de text
în factori; acest pas este lăsat nouă de către R pentru a-l efectua. Dacă datele se află în
afara directorului de lucru R, puteți specifica calea către fișierul CSV specificând calea
completă, de exemplu, /path/to/mydata.csv când apelați funcția read.csv ().
În mod implicit, R presupune că fișierul CSV include o linie de antet care
conține lista de nume a caracteristicilor din setul de date. Dacă un fișier CSV nu are un
antet, specificați opțiunea header = FALSE după cum se arată în următoarea comandă și
R va atribui implicit numele caracteristicilor în formularul V1, V2 și așa mai departe:
> mydata <- read.csv("mydata.csv", stringsAsFactors = FALSE,
27Lantz Brett Machine Learning with R , Second Edition,Birmingham,Packt Publishing Ltd,July 2015,pag.40

Radu Cosmin Limbajul R
header = FALSE)
Funcția read.csv () este un caz special al funcției read.table (), care
poate citi datele din tabel în mai multe forme diferite, inclusiv alte formate delimitate,
cum ar fi valoarea separată de tabel (TSV). Pentru informații mai detaliate despre
familia de funcții a read.table (), consultați pagina de ajutor R utilizând comanda
?read.table.
Pentru a salva un cadru de date într-un fișier CSV , utilizați funcția write.csv ().
În cazul în care datele dvs. cadru sunt numite pt_data, introduceți pur și simplu:
> write.csv(pt_data, file = "pt_data.csv")
Acesta va scrie un fișier CSV cu numele pt_data.csv în directorul de lucru R.
2.2.2 Importarea datelor din bazele de date SQL

Dacă datele dvs. sunt stocate într-o conexiune ODBC (Open Database
Connectivity) SQL , cum ar fi Oracle, MySQL, PostgreSQL, Microsoft SQL sau
SQLite, pachetul RODBC creat de Brian Ripley poate fi folosit pentru a importa aceste
date direct într-un cadru de date R.
ODBC este un protocol standard pentru conectarea la baze de date indiferent de
sistemul de operare sau DBMS (Sistem de gestionare a bazelor de date). Dacă ați fost
anterior conectat la o bază de date prin ODBC, probabil că v-ați fi referit la aceasta prin
intermediul DSN (numele sursei de date). Veți avea nevoie de DSN, plus un nume de
utilizator și o parolă (dacă baza dvs. de date o cere) pentru utilizarea RODBC.
Dacă nu ați făcut deja acest lucru, va trebui să instalați și să încărcați pachetul
RODBC:
> install.packages("RODBC")
> library(RODBC)
Apoi, vom deschide o conexiune numită mydb către baza de date cu DSN
my_dsn:
> mydb <- odbcConnect("my_dsn")
Alternativ, dacă conexiunea dvs. ODBC necesită un nume de utilizator și o
parolă, acestea ar trebui specificate atunci când apelați funcția odbcConnect ():
> mydb <- odbcConnect("my_dsn", uid = "my_username"
pwd = "my_password")

Radu Cosmin Limbajul R
Acum, că avem o conexiune de bază de date deschisă, putem folosi funcția
sqlQuery () pentru a crea un cadru de date R din rândurile bazei de date trase de in-
terogările SQL. Această funcție,ca multe funcții care creează cadre de date, ne per-
mite să specificăm stringsAsFactors =FALSE, care împiedică R să transforme datele
caracterului în factori.
Funcția sqlQuery () utilizează interogări tipice SQL așa cum se arată în ur-
mătoarea comandă:
> patient_query <- "select * from patient_data where alive = 1"
> patient_data <- sqlQuery(channel = mydb, query = patient_query,
stringsAsFactors = FALSE)
Variabila patient_data rezultată va fi un cadru de date care conține toate rân-
durile selectate utilizând interogarea SQL stocată în patient_query.
După ce ați terminat de folosit baza de date, conexiunea poate fi închisă după
cum se arată în următoarea comandă:
> odbcClose(mydb)
Aceasta va închide conexiunea mydb. Deși R va închide automat conexiunile
ODBC la sfârșitul sesiunii R, este o practică mai bună să faceți acest lucru în mod expli-
cit.28

2.2.3 Importarea datelor din SAS
Pachetul foreign [R-core, 2012] oferă funcția read.ssd () pentru importa-
rea seturilor de date SAS (.sas7bdat files) în R. Cu toate acestea, următoarele aspecte
sunt esențiale pentru ca importul să aibă succes.
➢SAS trebuie să fie disponibil pe computerul dvs. și read.ssd () va
apela SAS pentru a citi seturile de date SAS și a le importa în R.
➢Numele de fișier al unui set de date SAS nu trebuie să depășească opt
caractere. În caz contrar,importul ar eșua. Nu există o astfel de limită atunci când
importați dintr-un fișier .CSV .
➢În timpul importării, numele variabilelor mai lungi de opt caractere sunt
trunchiate la opt caractere, care adesea face dificil să se cunoască semnificațiile varia-
28Lantz Brett Machine Learning with R , Second Edition,Birmingham,Packt Publishing Ltd,July 2015,pag.42

Radu Cosmin Limbajul R
bilelor. O modalitate de a se rezolva această problemă este de a importa nume de varia-
bile separat de un fișier .CSV , care păstrează complet numele variabilelor.
Un fișier gol .CSV cu nume de variabile poate fi generat cu următoarea
metodă.29
1. Creați o tabelă SAS goală dumVariabile din dumData după cum urmează.
data work.dumVariables;
set work.dumData(obs=0);
run ;
2.Exportați tabela dumVariabile ca un fișier .CSV .
Exemplul de mai jos demonstrează importarea datelor dintr-un set de date
SAS . Presupuneți că există un fișier SAS dumData.sas7bdat și un fișier .CSV
dumVariables from dumData după cum urmează .
> library(foreign) # for importing SAS data
> # the path of SAS on your computer
> sashome <- "C:/Program Files/SAS/SASFoundation/9.2"
> filepath <- "./data"
> # filename should be no more than 8 characters, without extensio n
> fileName <- "dumData"
> # read data from a SAS dataset
> a <- read.ssd(file.path(filepath), fileName,
sascmd=file.path(sashome,"sas.exe"))
> print(a)
VARIABLE VARIABL2 VARIABL3
1 1 0.1 R
2 2 0.2 and
3 3 0.3 Data Mining
4 4 0.4 Examples
5 5 0.5 Case Studies

Rețineți că numele de variabile de mai sus sunt trunchiate. Numele întregi pot
fi importate din fișierele .CSV cu următorul cod.
> # read variable names from a .CSV file
> variableFileName <- "dumVariables.csv"
> myNames <- read.csv(paste(filepath, variableFileName, sep="/"))
> names(a) <- names(myNames)
> print(a)
29http://www2.rdatamining.com/uploads/5/7/1/3/57136767/rdatamining-book.pdf pagina 6

Radu Cosmin Limbajul R
VariableInt VariableReal VariableChar
1 1 0.1 R
2 2 0.2 and
3 3 0.3 Data Mining
4 4 0.4 Examples
5 5 0.5 Case Studies

2.3 Reprezentări grafice în R

Radu Cosmin Limbajul R

Radu Cosmin Limbajul R

Similar Posts