4  Els objectes

Ja hem vist anteriorment que a l’Environment hi ha emmagatzemats tots els objectes i funcions dels paquets que tenim carregats. Però també podem crear els nostres propis objectes i funcions. Ara mateix, si consultem a Global Environment, veurem que està buit.

Ara crearem objectes (deixarem les funcions per a un curs més avançat).

4.1 Crear objectes

Els objectes són un conjunt de dades que s’emmagatzemen a R amb un nom determinat. Per crear un objecte propi i emmagatzemar-lo al Global Environment, necessitarem el símbol <-1. A l’esquerra del símbol hi posarem el nom que adoptarà l’objecte i a la dreta hi posarem el contingut.

  • 1 Amb Windows, també el podem crear amb la drecera de teclat Alt+-. Amb Mac, Option+-.

  • Pas 12. Crea objectes

    A continuació crearem els objectes següents:

    V <- 6
    suma <- 2 + 2
    Suma <- 3 + 4 + 6 + 6
    V <- 25 / 5

    Comprova que aquests objectes s’han creat en el Global Environment:

    En la creació d’objectes hi ha algunes regles bàsiques que cal tenir en compte:

    • R distingeix entre majúscules (Suma) i minúscules (suma).
    • Si guardem una operació (3 + 4 + 6 + 6) en un objecte, R ens guardarà només el resultat de l’operació (19).
    • Si guardem un objecte amb el nom d’un objecte ja creat (V), R sobreescriurà l’antic objecte. Així, en la segona vegada que hem creat un objecte amb nom V, R ha sobreescrit el nou resultat.

    4.2 Consulta, reproducció i eliminació d’objectes

    Amb els objectes podem fer quatre accions principals:

    • Consultar els objectes que hem creat teclejant ls().
    • Reproduir el contingut d’un objecte teclejant-ne el nom seguit de Ctrl+Enter.
    • Eliminar els objectes del Global Environment utilitzant la funció rm(). Per exemple, rm(Suma, V) eliminarà els objectes Suma i V del Global Environment.
    • Eliminar tots els objectes utilitzant rm(list = ls()).
    Pas 13. Reprodueix objectes

    Podem reproduir el contingut dels objectes que acabem de crear si situem el cursor a la línia de codi de l’script que conté el nom de l’objecte que volem reproduir i premem Ctrl+Enter.

    suma
    Suma
    V

    Recordem que, com hem vist anteriorment, també podem reproduir un objecte si el seleccionem a l’script i premem Ctrl+Enter.

    4.3 Importació d’arxius

    Fins ara hem creat objectes de poc interès substantiu sobre la temàtica que estem estudiant. Encara que pugui ser apassionant viatjar per l’univers de Star Wars, la gràcia de crear objectes és, com hem esmentat anteriorment, aconseguir que continguin dades sobre temes que tinguin relació directa amb la nostra disciplina d’estudi. Això es fa mitjançant la importació d’arxius. El procediment habitual amb R serà el següent:

    1. Convertirem una base de dades en un objecte d’R. Per exemple, una base de dades de partits polítics, o de grups terroristes, o de bombardejos al Iemen.
    2. Treballarem l’objecte amb funcions. Les funcions ens permetran transformar les dades per tal que responguin les nostres preguntes.

    Les dades que ens interessen se solen trobar en arxius que tenen formats que probablement ens són familiars, com .xlsx, .csv o .dta. Per transformar aquestes dades en objecte d’R, les funcions d’importació tenen noms bastant intuïtius. Per exemple:

    • Si volem llegir un arxiu csv, la funció serà habitualment read_csv(), que és al paquet readr.
    • Si volem llegir un arxiu xlsx, la funció serà habitualment read_xlsx(), que és al paquet readxl.

    4.3.1 Importar des d’una web

    En algunes ocasions, importar un arxiu des d’una web pot ser la mar de senzill. Només ens caldrà conèixer l’adreça web on és, examinar de quin tipus d’arxiu es tracta, donar un nom a l’objecte i aplicar la funció que volem utilitzar. Per exemple:

    • Web: https://www.chesdata.eu/s/Candidate_Ukraine_2014.csv.
    • Tipus d’arxiu: Veiem que és un arxiu csv.
    • Nom d’objecte: ches.
    • Funció: read_csv().
    Pas 14. Importar des de pàgina web

    A continuació importarem un arxiu que és a la pàgina web de la Chapel Hill Expert Survey (CHES). La funció que necessitem pertany al paquet readr, que haurem de tenir carregat si volem que ens funcioni:

    ches <- read_csv("https://www.chesdata.eu/s/Candidate_Ukraine_2014.csv")

    És important remarcar que el nom de l’ubicació d’internet ha d’anar entre cometes. Un cop hem creat l’objecte ches, ja li podem aplicar algunes funcions com les que hem vist anteriorment.

    ches
    glimpse(ches)
    unique(ches$party_name)
    hist(ches$lrgen)
    plot(ches$lrgen, ches$galtan)

    Si el codi anterior ens ha funcionat és perquè tenim carregat el paquet readr, que conté la funció read_csv(). De la mateixa manera, si volem importar a R un arxiu d’Excel, necessitarem les funcions read_xlsx() o read_xls() del paquet readxl, que també haurem de tenir carregat. Aquestes i altres maneres d’importar arxius les resumim a la següent taula 4.1

    Taula 4.1: Tipus de funcions per importar arxius
    Tipus d’arxiu Paquet Funcions
    csv readr read_csv() o read_csv2()
    xls readxl read_xls()
    xlsx readxl read_xlsx()
    dta foreign read.dta()
    dta haven read_dta()
    sav haven read_sav()
    spss haven read_spss()

    Com observem a la taula, podem distingir dos tipus de funcions csv. La funció read_csv() importa els arxius que estan codificats en format americà, on la coma separa els valors i el punt indica els decimals, mentre que la funció read_csv2() importa els arxius codificats en format europeu, on el punt i coma és el separador i la coma indica els decimals.

    4.3.2 Importació des del directori de treball

    El més habitual, però, és que no sigui tan fàcil importar les dades directament d’internet. Normalment, el que haurem de fer serà entrar a la pàgina web on són les dades, descarregar l’arxiu al nostre ordinador, situar-lo al nostre directori de treball i importar-lo a R2.

  • 2 Hi ha funcions com download.file() que ens permeten automatitzar la descàrrega d’arxius des d’internet. No obstant, és una funció que genera errors en alguns ordinadors, de manera que no l’aprendrem fins més endavant.

  • Un aquest cas, l’únic que haurem de fer és assegurar-nos que tinguem l’arxiu en el directori de treball i posar el seu nom, entre cometes, a la funció d’importació.

    ches <- read_csv("Candidate_Ukraine_2014.csv")

    Una altra opció per importar arxius, molt pràctica, és clicar directament a l’arxiu al directori de treball i seleccionar Import Dataset:

    En el següent exercici descarregarem un arxiu d’Excel, el situarem al nostre directori de treball i el convertirem en un objecte d’R.

    Exercici 2. Importa els SDG

    Volem treballar amb els Sustainable Development Goals (SDG), que es troben a la web de Sustainable Development Report. A dins de la web, les dades són a la part inferior de la pantalla. A la nova pantalla que apareixerà, prem “View raw” per descarregar les dades.

    Descarregarem l’arxiu i ens assegurarem que estigui ubicat al nostre directori de treball.

    També podem consultar el contingut del nostre directori de treball amb la funció següent.

    dir()

    Finalment, com que tenim carregat el paquet readxl, transformarem l’arxiu d’Excel en un objecte d’R mitjançant la funció següent. Fixeu-vos que hem introduït l’argument sheet = 4 a la funció. Aquests arguments ens serveixen per donar indicacions més detallades a les funcions. En aquest cas, estem precisant que les dades que ens interessen són a la quarta pestanya de l’arxiu d’Excel.

    sdg <- read_xlsx("SDR 2021 - Database.xlsx", sheet = 4)

    Un cop hem creat l’objecte sdg, ja li podem aplicar algunes funcions.

    sdg
    glimpse(sdg)
    table(sdg$`Regions used for the SDG Index & Dashboard`)
    hist(sdg$`Press Freedom Index (best 0-100 worst)`)
    Pas 15. Ordena el directori de treball

    En alguns projectes, és possible que haguem de posar molts documents al nostre directori de treball. Una forma útil d’ordenar els arxius és utilitzar el sistema de carpetes habitual.

    1. A la finestra Files, crearem una carpeta que es digui Datasets.

    1. Posarem l’arxiu SDR 2021 - Database.xlsx a dins la carpeta Datasets.

    2. Inclourem Datasets/ abans del nom de l’arxiu en la funció d’importació.

    sdg <- read_xlsx("Datasets/SDR 2021 - Database.xlsx", sheet = 4)

    En algunes ocasions, la descàrrega d’arxius es pot automatitzar. Així, enlloc d’haver d’anar a una pàgina web per descarregar l’arxiu que volem, podem utilitzar la funció download.file() per descarregar-lo. Com a primer argument de la funció hi posarem la ubicació de l’arxiu a internet i com a segon argument el nom que rebrà l’arxiu un cop descarregat. Per defecte, l’arxiu es descarrega al directori de treball.

    També podem automatitzar la descompressió d’un arxiu zip. Enlloc de descomprimir-lo manualment, només ens caldrà utilitzar la funció unzip() per descomprimir-ne el contingut.

    Pas 16. Descarregar un arxiu

    Prova de descarregar el següent arxiu:

    # Download zip file
    download.file("https://www.jordimas.cat/files/download_file_sample.zip", "download_file_sample.zip")
    
    # Unzip file
    unzip("download_file_sample.zip")

    No obstant, cal tenir en compte que la funció download.file() dona problemes en alguns ordinadors. El problema el notarem quan intentem convertir els arxius descarregats en mode automàtic a objecte d’R amb alguna funció read. Si ens dona un missatge d’error a la consola, haurem l’eliminar els arxius que haguem descarregat amb la funció download.file() i els tornarem a descarregar manualment. Per això, en aquest mòduls i en els següents sempre optarem per la descàrrega manual.