Lipsa datelor este o problemă comună în analiza datelor. Din fericire, R oferă instrumente puternice pentru a gestiona valorile lipsă, inclusiv zoo
biblioteca si na.approx()
funcţie. În acest articol, vom explora cum să folosim aceste instrumente pentru a interpola valorile lipsă în R, cu câteva exemple practice.
Interpolarea este o metodă de estimare a valorilor lipsă pe baza valorilor cunoscute din jur. Este deosebit de util atunci când aveți de-a face cu date din seria temporală sau cu orice set de date în care valorile lipsă nu sunt distribuite aleatoriu.
Există diverse metode de interpolare, dar ne vom concentra pe interpolarea liniară în acest articol. Interpolarea liniară presupune o linie dreaptă între două puncte cunoscute și estimează valorile lipsă de-a lungul acelei linii.
The zoo
biblioteca din R este concepută pentru a gestiona date neregulate din seria temporală. Acesta oferă o colecție de funcții pentru lucrul cu observații ordonate, inclusiv na.approx()
funcţie de interpolare a valorilor lipsă.
Iată sintaxa de bază pentru utilizare na.approx()
pentru a interpola valorile lipsă într-o coloană de cadru de date:
library(dplyr) library(zoo)
df <- df %>% mutate(column_name = na.approx(column_name))
Să descompunem asta:
- Încărcăm
dplyr
şizoo
biblioteci. - Folosim
mutate()
functia de ladplyr
pentru a crea o coloană nouă pe baza uneia existente. - Interior
mutate()
aplicămna.approx()
funcția la coloana pe care dorim să o interpolăm.
The na.approx()
funcția înlocuiește fiecare valoare lipsă (NA) cu o valoare interpolată folosind interpolarea liniară în mod implicit.
Să începem cu un exemplu simplu de interpolare a valorilor lipsă într-un vector.
# Create a vector with missing values x <- c(1, 2, NA, NA, 5, 6, 7, NA, 9) # Interpolate missing values x_interpolated <- na.approx(x) print(x_interpolated)
După cum puteți vedea, valorile lipsă au fost înlocuite cu valori interpolate pe baza valorilor cunoscute din jur.
Acum să ne uităm la un exemplu mai realist de interpolare a valorilor lipsă într-un cadru de date.
# Create a data frame with missing values df <- data.frame( date = as.Date(c("2023-01-01", "2023-01-02", "2023-01-03", "2023-01-04", "2023-01-05")), value = c(10, NA, NA, 20, 30) ) # Interpolate missing values df$value_interpolated <- na.approx(df$value) print(df)
date value value_interpolated 1 2023-01-01 10 10.00000 2 2023-01-02 NA 13.33333 3 2023-01-03 NA 16.66667 4 2023-01-04 20 20.00000 5 2023-01-05 30 30.00000
Aici, am creat un cadru de date cu a date
coloană și a value
coloană care conține valorile lipsă. Am folosit apoi na.approx()
pentru a interpola valorile lipsă și a stocat rezultatul într-o nouă coloană numită value_interpolated
.
Implicit, na.approx()
va interpola valorile lipsă, indiferent de mărimea decalajului dintre valorile cunoscute. Cu toate acestea, puteți utiliza maxgap
argument pentru a limita numărul maxim de NA consecutive de completat.
# Create a vector with a large gap of missing values x <- c(1, 2, NA, NA, NA, NA, NA, 8, 9) # Interpolate missing values with a maximum gap of 2 x_interpolated <- na.approx(x, maxgap = 2) print(x_interpolated)
(1) 1 2 NA NA NA NA NA 8 9
În acest exemplu, setăm maxgap = 2
ceea ce înseamnă că na.approx()
va interpola valorile lipsă numai dacă diferența dintre valorile cunoscute este 2 sau mai mică. Deoarece decalajul din vectorul nostru este mai mare de 2, valorile lipsă nu sunt interpolate.
Acum este rândul tău să exersezi interpolarea valorilor lipsă în R. Iată un exemplu de problemă pe care să-l încerci:
Creați un vector cu următoarele valori: c(10, 20, NA, NA, 50, 60, NA, 80, 90, NA)
. Interpolați valorile lipsă folosind na.approx()
cu un interval maxim de 3.
Click aici pentru a vedea soluția
# Create the vector x <- c(10, 20, NA, NA, 50, 60, NA, 80, 90, NA) # Interpolate missing values with a maximum gap of 3 x_interpolated <- na.approx(x, maxgap = 3) print(x_interpolated)
(1) 10 20 30 40 50 60 70 80 90
- Interpolarea este o metodă de estimare a valorilor lipsă pe baza valorilor cunoscute din jur.
- The
zoo
biblioteca în R oferăna.approx()
funcția de interpolare a valorilor lipsă utilizând interpolarea liniară. - Puteți folosi
na.approx()
pentru a interpola valorile lipsă în vectori și cadre de date. - The
maxgap
argument înna.approx()
vă permite să limitați numărul maxim de NA consecutive de completat.
Interpolarea valorilor lipsă este o abilitate esențială pentru orice programator R care lucrează cu date din lumea reală. Prin utilizarea zoo
biblioteca si na.approx()
funcția, puteți estima cu ușurință valorile lipsă și puteți îmbunătăți calitatea datelor dvs.
Nu uitați să luați în considerare întotdeauna contextul datelor dvs. și oportunitatea interpolării înainte de a le aplica. În unele cazuri, alte metode de tratare a datelor lipsă, cum ar fi imputarea sau ștergerea, pot fi mai potrivite.
Acum că ați învățat cum să interpolați valorile lipsă în R, puneți-vă abilitățile la încercare și încercați-l pe propriile seturi de date. Codare fericită!
-
Ce este interpolarea? Interpolarea este o metodă de estimare a valorilor lipsă pe baza valorilor cunoscute din jur.
-
Ce este biblioteca grădinii zoologice din R? The
zoo
biblioteca din R este concepută pentru a gestiona date neregulate ale serii temporale și oferă funcții pentru lucrul cu observații ordonate. -
Ce face funcția na.approx()? The
na.approx()
funcţia înzoo
biblioteca înlocuiește fiecare valoare lipsă (NA) cu o valoare interpolată folosind interpolarea liniară în mod implicit. -
Pot folosi na.approx() pe cadre de date? Da, poți folosi
na.approx()
pentru a interpola valorile lipsă în coloanele cadrului de date. -
Pentru ce este folosit argumentul maxgap din na.approx()? The
maxgap
argument înna.approx()
vă permite să limitați numărul maxim de NA consecutive de completat. Dacă diferența dintre valorile cunoscute este mai mare decât cea specificatămaxgap
valorile lipsă nu vor fi interpolate.