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şizoobiblioteci. - Folosim
mutate()functia de ladplyrpentru 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 = 2ceea 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
zoobiblioteca î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
maxgapargument î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
zoobiblioteca 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 înzoobiblioteca î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
maxgapargument î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ămaxgapvalorile lipsă nu vor fi interpolate.
