În cadrul analizei datelor cu limbajul R, ne confruntăm frecvent cu seturi de date care includ valori necompletate sau incorecte. Aceste imperfecțiuni pot genera distorsiuni semnificative în rezultatele studiilor noastre. De aceea, este indispensabilă familiarizarea cu strategiile de gestionare a datelor incomplete și a valorilor eronate.
În acest material, ne vom axa pe două instrumente R: funcțiile replace() și is.na(). Funcția replace() oferă posibilitatea de a schimba anumite valori dintr-un vector sau dintr-un cadru de date cu altele, specificate. Pe de altă parte, funcția is.na() este utilă pentru identificarea datelor lipsă într-un vector sau cadru de date.
Analiza funcției replace()
Sintaxa
Forma generală a funcției replace() este următoarea:
replace(x, listă, valori)
- x: Reprezintă vectorul sau cadrul de date în care se dorește substituirea valorilor.
- listă: Un vector cu indici sau un vector logic care identifică valorile care trebuie modificate.
- valori: Un vector cu noile valori ce vor înlocui datele indicate în argumentul
listă.
Exemple practice
a. Înlocuirea unei valori specifice
Pentru a substitui o anumită valoare într-un vector, se poate utiliza următoarea sintaxă:
x <- c("A", "B", "C", "A", "D")
x <- replace(x, x == "A", "X")
Acest segment de cod va înlocui toate aparițiile literei „A” din vectorul x cu „X”.
b. Înlocuirea mai multor valori
Funcția replace() poate fi folosită și pentru a schimba mai multe valori simultan. De exemplu, pentru a înlocui atât „A”, cât și „B” cu „X”, se poate utiliza următorul cod:
x <- c("A", "B", "C", "A", "D")
x <- replace(x, x %in% c("A", "B"), "X")
c. Înlocuirea valorilor prin indici
Alternativ la folosirea unui vector logic, se pot folosi indicii pentru a identifica valorile de înlocuit. De exemplu, pentru a schimba primul element din vectorul x cu „X”, se poate scrie:
x <- c("A", "B", "C", "A", "D")
x <- replace(x, 1, "X")
Analiza funcției is.na()
Sintaxa
Structura funcției is.na() este:
is.na(x)
- x: Vectorul sau cadrul de date în care se caută valorile lipsă.
Exemple practice
a. Identificarea valorilor lipsă într-un vector
Pentru a evidenția valorile lipsă dintr-un vector, se poate utiliza următoarea sintaxă:
x <- c(1, 2, 3, NA, 5)
is.na(x)
Acest cod va crea un vector logic unde elementele care corespund valorilor lipsă vor fi TRUE, iar cele corespunzătoare valorilor valide vor fi FALSE.
b. Identificarea valorilor lipsă într-un cadru de date
Funcția is.na() poate fi aplicată și pentru a detecta valorile lipsă într-un cadru de date. Pentru a găsi valorile lipsă din coloana valoarea a cadrului de date df, se poate scrie:
df <- data.frame(id = c(1, 2, 3, 4, 5), valoare = c(1, 2, NA, 4, 5))
is.na(df$valoarea)
Acest cod va genera o coloană logică în cadrul de date df, unde valorile lipsă vor fi marcate cu TRUE, iar cele prezente cu FALSE.
Concluzii
Funcțiile replace() și is.na() sunt instrumente esențiale pentru manipularea valorilor lipsă și a valorilor eronate în R. replace() permite substituirea eficientă a anumitor valori, în timp ce is.na() oferă modalitatea de a identifica aceste valori lipsă. Înțelegerea și folosirea adecvată a acestor funcții este crucială pentru analiza eficientă a datelor.
Întrebări frecvente (FAQ)
1. Care este distincția dintre NA și NaN în R?
– NA este folosit pentru a reprezenta datele lipsă în obiectele de tip factor, în timp ce NaN este folosit în cazul obiectelor numerice.
2. Cum pot înlocui toate valorile lipsă dintr-un vector cu 0?
– Se poate folosi următorul cod: x <- replace(x, is.na(x), 0).
3. Cum se pot elimina toate rândurile cu valori lipsă dintr-un cadru de date?
– Se utilizează funcția na.omit(). Exemplu: df_nou <- na.omit(df).
4. Cum pot înlocui o valoare specifică doar dacă aceasta este lipsă?
– Se poate utiliza funcția coalesce(). Exemplu: x <- coalesce(x, "Valoare implicită").
5. Cum se pot înlocui valorile lipsă din mai multe coloane ale unui cadru de date?
– Se folosește funcția apply() combinată cu replace(). Exemplu: df <- apply(df, 2, function(x) replace(x, is.na(x), 0)).
6. Cum verificăm dacă o valoare este atât numerică cât și lipsă?
– Se folosesc împreună is.na() și is.numeric(). Exemplu: is.na(x) & is.numeric(x).
7. Cum înlocuim valorile lipsă cu media valorilor valide?
– Se poate apela funcția impute() din pachetul tidyverse. Exemplu: x <- impute(x, mean).
8. Cum înlocuim valorile lipsă cu datele din coloana precedentă?
– Funcția fill() din tidyverse este utilă. Exemplu: df <- df %>% fill(valoarea).