You are on page 1of 13

MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022

PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

Pràctica 4: La transformació simple de variables1

Una de les qüestions que hem vist en anteriors pràctiques és que en algunes variables apareixen
valors que no són analitzables, com pot ser el 98 i 99, en variables que van del 0 al 10, o les
etiquetes No ho sap o No contesta, en variables de factor. En la major part de les anàlisis, aquests
valors han de ser exclosos, en tant que no tenen un significat substantiu en sí mateixos.
Especialment greu és el cas de les variables numèriques, on no tenir en compte que han de ser
exclosos comporta errors molt greus en càlculs posteriors.
Habitualment el què es fa és excloure’ls de les anàlisis, mitjançant la seva reconversió a valors
perduts o, en llenguatge de R, a valors NA (de l’anglès Not Available). Els valors NA es
corresponen a un "forat" d’informació de la matriu i són caselles que estan en blanc. Abans, o
en el moment d’eliminar-los, és convenient, per si mai tenim la necessitat d’analitzar aquests
valors diferenciant entre cada tipus de no-resposta ("no ho sap", "no contesta" o "no
pertinent"), duplicar la variable per tal de no perdre la informació original.
Per tant, la forma de tractar a R aquests valors és (1) crear una còpia de la variable original, (2)
codificar les no-respostes com a NA, i (3) fer les anàlisis corresponents seleccionant la versió de
la variable que interessi en cada moment, amb o sense NA, o combinant la informació
d’ambdues.
Encara que hi ha diferents maneres de transformar una variable per tal de reconvertir els valors
no vàlids a NA, aquí farem servir una instrucció que també ens servirà per altres qüestions. Es
tracta de la funció recode, que es troba en el paquet car. Per tant, abans de començar comprova
que tens instal·lat el paquet car, i si no, instal·la’l. Per això fes:
library(car) # de la biblioteca de paquets d’R, carrega l’anomenat car

Si la resposta a aquesta instrucció és que no s'ha pogut trobar el paquet, caldrà que l'instal·lis i
després el carreguis:
install.packages("car") # instal·la el paquet car

En aquesta pràctica treballarem amb el fitxer Practica4.rds.

1. La definició dels NA (I). El paquet car


Tot i que hi ha, en R, moltes maneres diferents per convertir valors de les variables a NA, en
aquest apartat explicarem només una funció –també la utilitzarem per altres transformacions–
i és la que farem servir durant tot el curs. Aquest funció –recode del paquet car– és la que
s’exigeix en aquest curs, mentre que les altres, malgrat que poden ser més eficients, són
complementàries. Distingirem la definició en funció del tipus de variable, factor o numèrica.

1
Ajenjo Cosp, Marc (2021) Pràctiques en RStudio de Mètodes Quantitatius per a la Recerca en
Criminologia. Pràctica 4. Departament de Sociologia, UAB; 33:45

33
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

Recorda! És convenient que les variables que hem d’analitzar siguin sempre factor o
numèriques.

Definició de NA en variables numèriques


Observa que a la base de dades hi ha deu variables quantitatives que es refereixen a una
valoració sobre els possibles problemes que tenen els ciutadans en el seu dia a dia (es correspon
a les variables que comencen per PROB_). Aquests problemes estan valorats de 0 (No són un
problema) a 10 (Són un problema greu), havent-hi, a més, valors 98 i 99 que es corresponen,
respectivament, a No ho sap i No contesta. Així, per exemple, si demanem la classe, així com un
summary i unes freqüències de la variable PROB_SEGUR_VANDAL (problemes de seguretat
deguts al vandalisme), obtindrem:

On, en primer lloc, veiem que es tracta d’una variable numèrica; en el summary veiem que el
valor més alt és un 99, un valor que no és vàlid; mentre que en les freqüències observem que hi
ha 24 persones (21+3) que no han respost la pregunta i que, per tant, hauran de ser eliminades
abans de fer les anàlisis corresponents. Per passar els valors 98 i 99 a perduts, farem servir la
següent funció:
dd$PROB_SEGUR_VANDAL2<-car::recode(dd$PROB_SEGUR_VANDAL,
' 98:99=NA ',
as.factor=F)

Analitzant en detall l’anterior instrucció veiem els següents arguments:


● dd$PROB_SEGUR_VANDAL2<- En anomenar-la diferent a l’original, generem la nova
variable (PROB_SEGUR_VANDAL2). De fet, la conversió l’haguéssim pogut fer sobre la
variable original. Això no ens generaria cap variable nova, però perdríem la informació
inicial (que distingeix entre No ho sap i No contesta) i, en cas que haguéssim comès algun
error en la instrucció, hauríem perdut la variable definitivament.
● car:: Escriure-ho és prescindible si anteriorment hem carregat la llibreria car.
● recode () Nom de la instrucció que conté els tres arguments següents separats per
comes i entre parèntesi.

34
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

● dd$PROB_SEGUR_VANDAL Nom de la variable original, de la que volem definir els NA.


● ' 98:99=NA ' Aquí li diem quina conversió volem fer, quins valors ha de passar a NA.
Aquesta instrucció l’hem d’escriure sempre entre cometes simples. En aquest cas li hem
dit que són els valors compresos entre 98 i 99. També li haguéssim pogut dir:
' 98=NA; 99=NA '

● as.factor=F Amb aquest argument ens assegurem que no generi una variable de factor,
sinó numèrica.
Un cop ho hem fet, si demanem el tipus de variable, un summary i unes freqüències de la nova
variable, observarem que segueix sent una variable numèrica, i que només conté valors vàlids
(de 0 a 10), a banda de 24 NA:

Per tant, en termes generals, per reconvertir valors a NA en una variable numèrica farem servir:
var_nova<-car::recode(var_vella, ' valors=NA ', as.factor=F)

Observa que... en generar NA en la taula de freqüències apareix una nova informació que
anomena Valid Percent. Es tracta dels percentatges excloent els valors NA. Així la columna
Percent es correspon als percentatges respecte del total, 4.734, mentre que la columna Valid
Percent correspon al percentatges sobre les respostes vàlides, 4.710 (4.734-24).

Definició de NA en variables de factor


En aquest cas treballarem amb la variable ESTUDIS, que comprovem que és de factor i que, en
fer freqüències té les següents categories:

En aquest cas tenim 48 persones que no han contestat i que hem de passar a NA, i una categoria
–Altres– que conté 0 casos i que també podem eliminar. Per fer els canvis corresponents farem
servir:

35
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

dd$ESTUDIS2<-car::recode(dd$ESTUDIS,
' "No contesta "=NA ',
as.factor=T,
levels=c("Menys Obligat", "Obligat",
"Secund gener", "Secund prof",
"Univers"))

Analitzant en detall les diferències amb l’anterior instrucció veiem:


● ' "No contesta"=NA ' En ser una variable de factor, hem d’escriure dobles cometes per
identificar on comença i on acaba el text. NA, en canvi, com que és un argument propi de
R no l’escriurem mai entre cometes. Si tinguéssim dos valors que volguéssim passar a NA,
els hauríem d’escriure separats per punt i coma. Per exemple:
' "No contesta"=NA; "No ho sap"=NA '

● as.factor=T En aquest cas volem que la variable resultant (ESTUDIS2) sigui un factor.
● levels= c("Menys Obligat", "Obligat", "Secund gener", "Secund prof",
"Univers") Tot i que aquesta part no és essencial, sí que és convenient escriure-la. En
cas que no ho féssim, la variable final tindria les mateixes categories que l’original, però
ordenades alfabèticament. Així, observa que aquí hem exclòs la categoria Altres, que no
tenia cap individu, i hem escrit la resta de categories en l’ordre que les volem en la variable
de sortida –que coincideix amb l’original.
És important que escriguis les etiquetes exactament igual a les originals, ja que si no
generarà nous NA i etiquetes sense individus. Prova-ho.
Si ho hem escrit tot correctament el resultat final serà una variable de factor amb la següent
distribució:

Important! Alhora d’escriure el nom de la variable i de les categories tingues en compte que
ho has de fer tal i com estaven. Qualsevol petita diferència generarà errors que no sempre
són fàcils de detectar. En aquest sentit recorda que R és sensible (distingeix) a majúscules i
minúscules.

Molt important i encara no m’he cansat de repetir-ho! Si després de cada transformació


tens cura de comprovar (per exemple, fent freqüències abans i després) que els resultats són
coherents, evitaràs molts errors.

Per tant, en termes generals, per reconvertir valors a NA en una variable de factor farem servir:
var_nova<-car::recode(var_vella, ' valors=NA ', as.factor=T,
levels=c("etiqueta1", "etiqueta2"...))

36
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

Molt important! Un dels errors típics en treballar amb bases de dades, és considerar que una
variable no pot tenir valors NA. Això és completament fals. El què no hi hauria d’haver són
valors impossibles (valors fora del rang 0-10, en una avaluació de 0 a 10) o sense un significat
substantiu (No contesta, en un factor). Per això transformem aquests valors no vàlids a NA,
de manera que en les anàlisis és habitual que tinguem, precisament, valors NA.

2. La definició dels NA (II). Altres possibilitats


Tal i com veurem resumidament, hi ha altres formes de definir NA que, probablement, són més
senzilles que l’anterior, encara que menys intuïtives.

Assignació directa
En el cas que la variable sigui numèrica i vulguem, com abans, passar el 98 i 99 a NA, podem fer:
dd$PROB_SEGUR_VANDAL3<-dd$PROB_SEGUR_VANDAL
dd$PROB_SEGUR_VANDAL3[dd$PROB_SEGUR_VANDAL3==98]<-NA
dd$PROB_SEGUR_VANDAL3[dd$PROB_SEGUR_VANDAL3==99]<-NA

En aquest cas en primer lloc hem creat una còpia de la variable, i a continuació hem reconvertit
el 98 i el 99 a NA utilitzant dues instruccions diferents.

Observa que... en aquests casos no fem servir una igualtat, sinó una doble igualtat. R utilitza
la doble igualtat per indicar que es tracta d’una assignació (per exemple, en el primer dels
casos, li estem dient: el valor que la variable té assignat com a 98.

Les dues instruccions darreres es podrien resumir en una de sola de la següent manera:
dd$PROB_SEGUR_VANDAL4<-dd$PROB_SEGUR_VANDAL
dd$PROB_SEGUR_VANDAL4[dd$PROB_SEGUR_VANDAL4>90]<-NA

En el cas que la variable sigui de factor, ho farem de manera molt similar:


dd$ESTUDIS3<-dd$ESTUDIS
dd$ESTUDIS3[dd$ESTUDIS3=="No contesta"]<-NA

Observa que... ara no hem modificat el nom de les categories. És a dir, si fas freqüències de
la nova variable –ESTUDIS3– veuràs que conté una etiqueta que es diu Altres i una altra
anomenada No contesta, ambdues amb 0 casos.

La utilització de la funció levels per definir NA en variables de factor


Tal i com hem vist en l’anterior pràctica, utilitzem la funció levels per redefinir les etiquetes de
les categories en una variable de factor, sense modificar-ne l’ordre. I, de fet, els NA poden ser
considerats com una nova categoria. Així, per exemple, en el cas d’estudis, on volem passar els
NO CONTESTA a NA i eliminar la categoria ALTRES, podem dir-li:
dd$ESTUDIS4<-dd$ESTUDIS
levels(dd$ESTUDIS4)<- c("Menys Obligat", "Obligat","Secund gener", "Secund
prof", "Univers", NA, NA)

37
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

Si ara fas freqüències de la nova variable veuràs que ja no conté cap categoria amb 0 casos, i
que ha reconvertit els No contesta a NA.

3. La recodificació de les variables


Tot i que la recodificació sol ser una agrupació, també s’utilitza per canviar els codis de les
variables sense que això impliqui una agrupació. A més, la recodificació pot comportar, o no, un
canvi en la classe de la variable i, sovint, en el nivell de mesura. Un exemple típic de recodificació
que comporta un canvi en el nivell de mesura d’una variable són les notes en un examen.
Aquetes notes solen tenir, inicialment, un format numèric (de 0 a 10), que podem reconvertir
en un format de factor (suspès, aprovat, notable, excel·lent). Anem a veure els tres tipus més
habituals de recodificació.

De variable numèrica a variable de factor


Ho veurem utilitzant la variable valoració sobre els possibles problemes que generen les drogues
al barri (PROB_DROGUES). Aquesta variable, que es mostra a continuació, es troba en una escala
de 0 a 10, mentre que els valors 98 i 99 s’han reservat per als que no ho saben o no contesten:

Suposem que, per les necessitats del nostre estudi, volem generar quatre categories: cap
problema (0), algun problema (1-4), bastants problemes (5-8) i molts problemes (9-10), deixant
la resta de valors com a NA (98 i 99).2 Per fer-ho utilitzarem la funció recode, tot i que abans
comprovarem com és la variable original:
class (dd$PROB_DROGUES) #Comprovem que es tracta d’una variable numèrica
descr::freq (dd$PROB_DROGUES) #Demanem freqüències per poder valorar,
posteriorment, que la recodificació ha estat correcta
dd$PROB_DROGUES2<-car::recode(dd$PROB_DROGUES,
' 0="Cap"; 1:4="Algun"; 5:8="Bastants";
9:10="Molts"; 98:99=NA ',
as.factor=T,
levels=c("Cap","Algun","Bastants","Molts"))
class(dd$PROB_DROGUES2) #Comprovem que es tracta d’una variable de factor
descr::freq(dd$PROB_DROGUES2) #La comparem amb la variable original

2
Tal i com pots deduir, aquesta agrupació és totalment arbitrària i n’haguéssim pogut utilitzar qualsevol
altra. Pots comprovar que aprofitem la mateixa instrucció d’agrupar per eliminar valors no vàlids.

38
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

Les qüestions que hem de tenir en compte en la funció recode són (algunes ja les hem vist
abans):
● dd$PROB_DROGUES2 Hem generat una nova variable
● ' 0="Cap"; 1:4="Algun"; 5:8="Bastants"; 9:10="Molts"; 98:99=NA ' Els valors
numèrics no porten cometes i poden anomenar-se correlativament (5:8, per exemple),
mentre que els factors cal escriure’ls entre cometes. Tingues en compte, també, que per
separar les diferents agrupacions ho fem amb el punt i coma.

Observació! Entre els valors numèrics es poden fer servir certes formulacions que
faciliten l’escriptura. Per exemple, l’expressió:
lo:1, inclou els nombres des del més petit, (lo=lowest) fins a l’1. I l’expressió:
11:hi, inclou des de l’11 fins al més gran (hi=highest).

● as.factor=T Aquí escrivim com serà la variable final, que volem que sigui un factor.
● levels=c("Cap","Algun","Bastants","Molts") Especifiquem l’ordre com volem la
variable. En cas de no escriure-ho ens l’ordenaria alfabèticament (Algun, Bastants, Cap,
Molts), obtenint un resultat incorrecte.

I... un cop més! Comprova que els resultats de la variable final (PROB_DROGUES2) s’adeqüen
perfectament als de la variable inicial (PROB_DROGUES).

De variable factor a variable de factor (I)


En aquest cas utilitzarem la variables ESTUDIS, que ja hem vist en un altre moment. Si fem
freqüències de la variable veiem:

Anem a crear una variable que tingui només 3 categories vàlides (obligatoris o menys,
secundària i universitaris). Per fer-ho, la sintaxi complerta és:
class(dd$ESTUDIS) #Comprovem que es tracta d’una variable de factor
descr::freq (dd$ESTUDIS) #Demanem freqüències per poder comprovar,
després, si la recodificació ha estat correcta
dd$ESTUDIS5<-car::recode (dd$ESTUDIS,
' "Menys Obligat"="Obligat o menys";
"Obligat"="Obligat o menys";
"Secund gener"="Secund"; "Secund prof"="Secund";
"Univers"="Univers"; else=NA ',
as.factor=T,
levels=c("Obligat o menys", "Secund", "Univers"))

39
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

class(dd$ESTUDIS5) #Comprovem que es tracta d’una variable de factor


descr::freq(dd$ESTUDIS5) #La comparem amb la variable original

L’única qüestió que aquí és nova és la utilització de l’argument else, en la reassignació de


categories. Aquesta funció és molt útil, però hem d’anar en compte amb el seu ús, ja que aquest
else inclou també els valors perduts que pogués tenir la variable original. Això, que en aquest
cas és irrellevant, pot ser important en altres ocasions.
En aquest cas, ens podríem haver estalviat el levels que hem inclòs dintre de la funció recode.
Saps per quin motiu? Pensa-hi una mica.

I... ja ho saps! Comprova que els resultats finals són coherents amb els inicials.

De variable factor a variable de factor (II)


Una manera més ràpida, però no tant intuïtiva, de recodificar variables de factor, és pensar-les
com si fossin numèriques. De fet, si recordes l’anterior pràctica, és possible convertir un factor
a numèric, de manera que el número que assigna és sempre l’odre de les categories. Així, si fas
freqüències de la variable ingressos (INGRES_FAM) obtindràs la següent taula:

Doncs bé, el valor numèric que correspon a cada categoria és, correlativament de l’1 al 12. Anem
a recodificar l’anterior variable en tres categories vàlides: Menys1800, 1801-4000 i Mes4000,
que respectivament es corresponen als números d’odre 1-3, 4-7, 8-10, mentre que les categories
11-12 (No ho sap i No contesta) les passarem a NA. En aquest cas la sintaxi complerta és:
class(dd$INGRES_FAM) #Comprovem que es tracta d’una variable de factor
descr::freq (dd$INGRES_FAM) #Demanem freqüències per poder comprovar,
posteriorment, que la recodificació ha estat
correcta
dd$INGRES_FAM2 <-car::recode (as.numeric (dd$INGRES_FAM),
' 1:3="Menys1800"; 4:7="1801-4000";
8:10="Mes4000"; else=NA ',
as.factor=T,
levels= c("Menys1800", "1801-4000",
"Mes4000"))
class(dd$INGRES_FAM2) #Comprovem que es tracta d’una variable de factor
descr::freq(dd$INGRES_FAM2) #La comparem amb la variable original

40
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

Observa que no hem canviat el tipus de variable, sinó que només li hem dit que, per aquesta
instrucció concreta, la consideri com a numèrica (as.numeric).

Observació! Aquest tipus de tractament el pots utilitzar en totes les variables de factor que
hagis de recodificar. Tot i que no el demanaré a l’examen, si t’entretens una mica i l’entens,
veuràs que simplifica molt la recodificació en variables de factor i disminueix el risc d’error,
sobretot quan les variables tenen etiquetes molt llargues.

De variable factor a variable numèrica


Encara que no és una transformació molt habitual, sí que és possible que ens trobem amb la
necessitat de reconvertir un factor a un nombre. Això sol succeir quan tenim una variable
numèrica agrupada en intervals i volem assignar, a cada interval, la seva marca de classe, per
poder estimar una mitjana aproximada. Anem a veure-ho amb la variable INGRES_FAM.
El criteri general és definir la marca de classe dels intervals a partir del seu punt mig. Se solen
fer, però, algunes excepcions, sobretot pel què fa al primer grup i al darrer, quan suposem que
no hi ha una distribució uniforme. Així, per exemple, el grup que afirma cobrar menys de 600
euros mensuals, és molt possible que, en mitjana, cobri una xifra clarament superior a 300, ja
que ens trobarem moltes més famílies amb ingressos propers a 600 que no pas propers a 0. I el
mateix per al grup que afirma cobrar més de 5.000 euros mensuals. És molt probable que la
majoria tinguin un valor proper a 5.000 mentre que n’hi haurà molt poques al voltant de 10.000,
per exemple. Per això la transformació que proposem és la següent:

Interval Marca de classe utilitzada


Menys600 500
601_1200 900
1201_1800 1.500
1801_2400 2.100
2401_3000 2.700
3001_3500 3.250
3501_4000 3.750
4001_4500 4.250
4501_5000 4.750
Mes5000 5.600

Així, per fer aquesta reconversió farem:


class(dd$INGRES_FAM) #Comprovem que es tracta d’una variable de factor
descr::freq (dd$INGRES_FAM) #Per comprovacions posteriors
dd$INGRES_FAM3 <-car::recode (dd$INGRES_FAM,
' "Menys600"=500; "601_1200"=900;
"1201_1800"=1500; "1801_2400"=2100;
"2401_3000"=2700; "3001_3500"=3250;
"3501_4000"=3750; "4001_4500"=4250;
"4501_5000"=4750; "Mes5000"=5600; else=NA ',
as.factor=F)

41
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

class(dd$INGRES_FAM3) #Comprovem que es tracta d’una variable de factor


descr::freq(dd$INGRES_FAM3) #La comparem amb la variable original

Prova-ho! Intenta fer la recodificació utilitzant el criteri anterior de pensar-la com a


numèrica. Veuràs que el risc d’equivocar-se és molt més baix.

A manera de resum! Les diferències entre unes recodificacions i les altres es resumeixen en
tres: (1) els factors van entre cometes i els nombres no; (2) la instrucció as.factor=F o
as.factor=T correspon, respectivament, a si la variable de sortida és un nombre o un factor;
(3) quan la sortida és una variable de factor cal ordenar les categories en funció dels nostres
interessos fent servir la instrucció levels=c("categ1","categ2","categ3"...).

4. Operacions aritmètiques entre variables


Una de les qüestions més simples en R és crear una variable que sigui el resultat de fer
operacions aritmètiques (+, -, *, /...) entre variables. Així, per exemple, per sumar dues variables
la sintaxi és:
var_nova <- var1+var2

A més, per exemple, podem crear una variable que sigui una constant, per exemple el nombre
0:
var_nova <- 0

En aquest exemple anem a treballar amb les variables referides a la seguretat al barri i al
municipi de Barcelona (VAL_SEGUR_BARRI i VAL_SEGUR), que provenen d’aquestes dues
preguntes:

El què volem és construir una variable que sigui la mitjana entre ambdós nivells de seguretat.
Per fer-ho, en primer lloc analitzem les variables originals:
class(dd$VAL_SEGUR_BARRI)
class(dd$VAL_SEGUR) #Són numèriques, de manera que en podrem fer càlculs
descr::freq(dd$VAL_SEGUR_BARRI)
descr::freq(dd$VAL_SEGUR) #En ambdues, a banda dels valors 0-10, hi ha 98
i 99, que haurem d’excloure
dd$VAL_SEGUR_BARRI1<-car::recode(dd$VAL_SEGUR_BARRI, ' 98:99=NA ',
as.factor=F)
dd$VAL_SEGUR1<-car::recode(dd$VAL_SEGUR, ' 98:99=NA ', as.factor=F)

Un cop fet això, si fem freqüències de les noves variables obtenim:

42
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

I ara ja en podem calcular la mitjana, fent:


dd$MITJ_SEGUR<-(dd$VAL_SEGUR_BARRI1+ dd$VAL_SEGUR1)/2
descr::freq(dd$ MITJ_SEGUR) #Per veure’n els resultats

Important! En fer qualsevol operació aritmètica has de tenir en compte que els NA són
contagiosos. Així, per exemple, NA+NA=NA, però també 5+NA=NA. Això comporta que el
nombre de NA final ha de ser més gran o igual al total de NA que hi ha en la variable que en
té més (en aquest cas 71). Això és especialment greu quan operem moltes variables, ja que
la probabilitat que una de les variables contingui algun valor NA és bastant gran. Pensa que:
9+10+8+9+7+9+NA=NA.

Tot i que això forma part de la segona part del curs, per veure quina és la mitjana de puntuació
que es dona a la seguretat, per part de tots els entrevistats, pots utilitzar la següent instrucció:
mean(dd$MITJ_SEGUR, na.rm=T)

On comprovaràs que la mitjana és de 5,49, és a dir, un aprovat justet.

5. Resum d’instruccions bàsiques


El recode tant ens serveix per definir NA com per agrupar les categories d’una variable. Si la
variable final és de factor, escriurem:
var_nova <-car::recode (var_orig, ' transformacions separades per ; ',
as.factor=T,
levels= c("nova_categ1", "nova_categ2"...))

En canvi, si la nova variable és numèrica, farem:


var_nova <-car::recode (var_orig, ' transformacions separades per ; ',
as.factor=F)

Quan tenim factors els hem d’escriure entre cometes, mentre que els nombres no. A més, si
hem d’escriure NA ho fem sense cometes.
Per fer operacions aritmètiques:
var_nova <- operacions aritmètiques entre variables existents

43
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

6. Exercicis

Treballa a partir de la mateixa base de dades (Practica4.rds).

(a) Observa que tenim una variable anomenada DISTRICTE que divideix Barcelona en els seus
10 districtes. Volem, però, una nova variable que divideixi Barcelona en només dues zones,
la zona nord (Les Corts, Sarrià-Sant Gervasi, Gràcia, Horta-Guinardó, Nou Barris i Sant
Andreu) i la zona sud (Sants-Montjuïc, L’Eixample, Ciutat Vella i Sant Martí).
Tingues en compte que hauràs de fer algun canvi previ, ja que l’apòstrof de la categoria
L’EIXAMPLE et donarà problemes. També et poden donar problemes els accents, les
dièresis i els guionets. Per solucionar-ho tens dues opcions:
(1) Tractar-la com a numèrica, com he fet en la pràctica quan hem agrupat la variable
ingressis,
(2) A partir de la funció levels (Pràctica 3) canviar els nivells de la variable per uns altres
que no donin problemes.
Genera aquesta nova variable, i respon a aquestes preguntes:
i. Dels 10 districtes, a quin s’han fet més entrevistes i aquí se n’han fet menys?
Quin percentatge d’individus hi ha a cadascuna de les dues zones finals?

(b) A partir de les variables que fan referència a la valoració als mossos d’esquadra i a la guàrdia
urbana (VAL_MOSSOS i VAL_GUB, respectivament) volem crear una variable que tingui tres
categories vàlides: valoren millor els mossos que la guàrdia urbana, els valoren igual, valoren
millor la guàrdia urbana que els mossos. Per fer-ho hauràs de seguir les següents passes:
i. Comprova de quina classe són les variables i converteix-les, si s’escau, en variables
numèriques que continguin com a valors vàlids els nombres del 0 al 10.
ii. Genera una nova variable que sigui la resta entre ambdues.
iii. Agrupa la nova variable, de manera que obtinguis les tres categories esmentades.
Ves en compte amb el nom que utilitzis per definir els noves categories. Per exemple,
una categoria no pot contenir el símbol =. Així no podràs escriure MOSSOS=GUB.
iv. Respon les següents preguntes:
De quina classe eren les variables originals (VAL_MOSSOS i VAL_GUB)?
La variable que has creat restant les altres dues, quants casos vàlids i quants casos
perduts (NA) té? Quan val la mitjana de la variable resta?
Digues quin dels dos cossos podem considerar que obté una millor valoració. En què et
fonamentes per afirmar-ho?
Un cop més... Important! Recorda, en cada pas, d’anar comprovant que els resultats
són coherents.

(c) Hi ha un seguit de 10 variables que mesuren la gravetat dels problemes que hi ha al barri,
de manera que els valors propers a 0 indiquen que no són cap problema i els valors propers
a 10 indiquen que són un problema greu. Es tracta de les variables PROB_NETEJA,

44
MÈTODES QUANTITATIUS DE RECERCA EN CRIMINOLOGIA CURS 2021-2022
PRÀCTIQUES EN RSTUDIO PRÀCTICA 4. LA TRANSFORMACIÓ SIMPLE DE VARIABLES

PROB_SEGUR_VANDAL, PROB_SOCIAL, PROB_TUR, PROB_SOROLL, PROB_SEGUR_BARALL,


PROB_DROGUES, PROB_OCUPES, PROB_CIRCUL i PROB_ANIMALS.
i. Es demana que generis una variable que sigui un indicador global dels problemes
(mitjana de les anteriors). Tingues en compte, però, que prèviament hauràs de depurar
les 10 variables originals.
ii. Calcula la mitjana d’aquesta nova variable
iii. Agrupa la nova variable en tres categories: problemes lleus (menys de 4), problemes
mitjos (4-6) i problemes greus (més de 6).
iv. Si tens en compte que la moda és la categoria més nombrosa, quin valor té la moda de
la variable construïda a l’anterior punt (iii).
Pots fer la pràctica en Markdown o en un Script d’R. Tant en un cas com en l’altre, el resultat
que has de penjar al campus és un Word on, a més del procediment, hi has d’afegir la resposta
a les següents preguntes:

• Exercici (a) Respon les dues preguntes que es formulen al punt (i).

• Exercici (b) Resposta a les preguntes formulades al punt (iv).

• Exercici (c) Resposta a les preguntes formulades a (ii) i a (iv).

45

You might also like