A: cara menggunakan aggregate() dan tidak menghapus baris dengan na
Anda dapat menggunakan fungsi Aggregate() di R untuk menghitung statistik ringkasan variabel dalam bingkai data.
Secara default, jika fungsi Aggregate() menemukan baris dalam bingkai data dengan satu atau lebih nilai NA, fungsi tersebut hanya akan menghapus baris tersebut saat melakukan penghitungan.
Hal ini dapat menimbulkan konsekuensi yang tidak terduga saat melakukan penghitungan.
Untuk menghindari perilaku ini, Anda dapat menggunakan argumen na.action=NULL di fungsi Aggregate() .
Contoh berikut menunjukkan bagaimana menggunakan argumen ini dalam praktik.
Contoh: Gunakan aggegate() di R dan jangan hapus baris dengan NA
Misalkan kita memiliki kerangka data berikut di R yang menunjukkan poin dan assist pemain bola basket dari tim berbeda:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'), points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18), assists=c(NA, 4, 4, 5, 3, 6, 8, 4, 10, NA)) #view data frame df team points assists 1 to 5 NA 2 to 9 4 3 to 12 4 4 to 14 5 5 A 14 3 6 B 13 6 7 B 10 8 8 B 6 4 9 C 15 10 10 C 18 NA
Sekarang misalkan kita mencoba menggunakan fungsi Aggregate() untuk menghitung jumlah poin dan assist , yang dikelompokkan berdasarkan tim :
#attempt to calculate sum of points and assists, grouped by team aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE ) team points assists 1 A 49 16 2 B 29 18 3 C 15 10
Hasilnya tampaknya menunjukkan kepada kita jumlah poin dan assist per tim, tetapi baris dengan nilai NA sebenarnya dihapus saat menjalankan perhitungan ini.
Kita dapat memastikannya dengan melihat bingkai data asli dan melihat bahwa Tim C memiliki dua nilai di kolom poin :
- 15
- 18
Jadi seharusnya tim C mengumpulkan total 33 poin, namun hasilnya hanya menunjukkan 15.
Pasalnya, baris dengan nilai poin 18 memiliki nilai NA pada kolom assist , artinya baris tersebut sebenarnya tidak digunakan saat menghitung jumlah poin tim vs.
Untuk memastikan bahwa baris dengan nilai NA tidak terhapus saat melakukan perhitungan, kita perlu menggunakan argumen na.action=NULL sebagai berikut:
#calculate sum of points and assists, grouped by team (don't drop NA rows) aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE , na. action =NULL) team points assists 1 A 54 16 2 B 29 18 3 C 33 10
Perhatikan bahwa fungsi Aggregate() dengan benar mengembalikan jumlah nilai poin untuk tim C kali ini sama dengan 33.
Catatan : Argumen na.rm=TRUE menetapkan bahwa nilai NA harus diabaikan saat melakukan penghitungan di kolom tertentu.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:
Cara menggunakan fungsi ringkasan() di R
Cara menghitung mean per grup di R
Cara menghitung statistik deskriptif di R