Cum să interpolați valorile lipsă în R: un ghid pas cu pas cu exemple

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

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:

  1. Încărcăm dplyr şi zoo biblioteci.
  2. Folosim mutate() functia de la dplyr pentru a crea o coloană nouă pe baza uneia existente.
  3. Interior mutate()aplicăm na.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 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 în na.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ă!

  1. Ce este interpolarea? Interpolarea este o metodă de estimare a valorilor lipsă pe baza valorilor cunoscute din jur.

  2. 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.

  3. Ce face funcția na.approx()? The na.approx() funcţia în zoo biblioteca înlocuiește fiecare valoare lipsă (NA) cu o valoare interpolată folosind interpolarea liniară în mod implicit.

  4. Pot folosi na.approx() pe cadre de date? Da, poți folosi na.approx() pentru a interpola valorile lipsă în coloanele cadrului de date.

  5. Pentru ce este folosit argumentul maxgap din na.approx()? The maxgap argument în na.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.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.