Bagaimana cara mengganti na dengan mean di dplyr
Anda dapat menggunakan metode berikut untuk mengganti nilai NA dengan mean menggunakan fungsi dari paket dplyr dan Tidyr di R:
Metode 1: Ganti nilai NA dengan rata-rata dalam sebuah kolom
df %>% mutate(across(col1, ~replace_na(., mean(., na. rm = TRUE ))))
Metode 2: Ganti nilai NA dengan rata-rata di beberapa kolom
df %>% mutate(across(c(col1, col2), ~replace_na(., mean(., na. rm = TRUE ))))
Metode 3: Ganti nilai NA dengan rata-rata di semua kolom numerik
df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))
Contoh berikut menunjukkan cara menggunakan setiap metode dalam praktik dengan kerangka data berikut:
#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
Contoh 1: Ganti nilai NA dengan rata-rata pada kolom
Kode berikut menunjukkan cara mengganti nilai NA pada kolom poin dengan nilai rata-rata pada kolom poin :
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
Nilai rata-rata pada kolom poin adalah 16, sehingga nilai NA pada kolom poin diganti dengan 16.
Semua kolom lainnya tetap tidak berubah.
Contoh 2: Ganti nilai NA dengan rata-rata di beberapa kolom
Kode berikut menunjukkan cara mengganti nilai NA pada kolom titik dan blok dengan rata-rata kolomnya masing-masing:
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
Perhatikan bahwa nilai NA pada kolom titik dan blok keduanya telah diganti dengan rata-rata kolomnya masing-masing.
Contoh 3: Ganti nilai NA dengan rata-rata di semua kolom numerik
Kode berikut menunjukkan cara mengganti nilai NA pada setiap kolom numerik dengan nilai rata-ratanya masing-masing:
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
Perhatikan bahwa nilai NA di semua kolom numerik telah diganti dengan rata-rata kolomnya masing-masing.
Satu-satunya kolom yang bukan numerik (pemain) tetap tidak berubah.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di dplyr:
Cara memfilter baris yang berisi string tertentu menggunakan dplyr
Cara menghitung frekuensi relatif menggunakan dplyr
Cara memilih baris pertama berdasarkan grup menggunakan dplyr