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