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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *