Jak zamienić na na mean w dplyr


Aby zastąpić wartości NA średnią, możesz użyć następujących metod, korzystając z funkcji z pakietów dplyr i Tidyr w R:

Metoda 1: Zastąp wartości NA średnią w kolumnie

 df %>% mutate(across(col1, ~replace_na(., mean(., na. rm = TRUE ))))

Metoda 2: Zastąp wartości NA średnią w wielu kolumnach

 df %>% mutate(across(c(col1, col2), ~replace_na(., mean(., na. rm = TRUE ))))

Metoda 3: Zastąp wartości NA średnią we wszystkich kolumnach liczbowych

 df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))

Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę z następującą ramką danych:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D', 'E'),
                 points=c(17, 13, NA, 9, 25),
                 rebounds=c(3, 4, NA, NA, 8),
                 blocks=c(1, 1, 2, 4, NA))

#view data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C NA NA 2
4 D 9 NA 4
5 E 25 8 NA

Przykład 1: Zamień wartości NA na średnią w kolumnie

Poniższy kod pokazuje, jak zastąpić wartości NA w kolumnie punktów średnią wartością w kolumnie punktów :

 library (dplyr)
library (tidyr)

#replace NA values in points column with mean of points column
df <- df %>% mutate(across(points, ~replace_na(., mean(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 16 NA 2
4 D 9 NA 4
5 E 25 8 NA

Średnia wartość w kolumnie punktów wyniosła 16, zatem wartość NA w kolumnie punktów zastąpiono liczbą 16.

Pozostałe kolumny pozostały niezmienione.

Przykład 2: Zastąp wartości NA średnią w wielu kolumnach

Poniższy kod pokazuje, jak zastąpić wartości NA w kolumnach punktowych i blokowych odpowiednimi średnimi kolumnami:

 library (dplyr)
library (tidyr)

#replace NA values in points and blocks columns with their respective means
df <- df %>% mutate(across(c(points, blocks), ~replace_na(., mean(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 16 NA 2
4 D 9 NA 4
5 E 25 8 2

Należy zauważyć, że wartości NA w kolumnach punktowych i blokowych zostały zastąpione odpowiednimi średnimi kolumnowymi.

Przykład 3: Zamień wartości NA na średnią we wszystkich kolumnach liczbowych

Poniższy kod pokazuje, jak zastąpić wartości NA w każdej kolumnie liczbowej ich odpowiednią wartością średnią:

 library (dplyr)
library (tidyr)

#replace NA values in all numeric columns with their respective means
df <- df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 16 5 2
4 D 9 5 4
5 E 25 8 2

Należy zauważyć, że wartości NA we wszystkich kolumnach liczbowych zostały zastąpione odpowiednimi średnimi kolumnowymi.

Jedyna kolumna, która nie była numeryczna (gracz), pozostała niezmieniona.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w dplyr:

Jak filtrować wiersze zawierające określony ciąg za pomocą dplyr
Jak obliczyć częstotliwości względne za pomocą dplyr
Jak wybrać pierwszy wiersz według grupy za pomocą dplyr

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *