Cara menerapkan fungsi ke setiap baris menggunakan dplyr


Anda dapat menggunakan sintaks dasar berikut untuk menerapkan fungsi ke setiap baris bingkai data di R menggunakan fungsi dplyr:

 df %>%
  rowwise() %>% 
  mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))

Contoh khusus ini menghitung nilai rata-rata col1 , col2 , dan col3 untuk setiap baris dalam bingkai data, namun Anda dapat mengganti fungsi Mean() dengan fungsi apa pun yang metriknya ingin Anda hitung berbeda.

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktik dengan kerangka data berikut yang berisi informasi tentang poin yang dicetak oleh pemain bola basket berbeda dalam permainan berbeda:

 #create data frame
df <- data. frame (game1=c(22, 25, 29, 13, 22, 30),
                 game2=c(12, 10, 6, 6, 8, 11),
                 game3=c(NA, 15, 15, 18, 22, 13))

#view data frame
df

  game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13

Contoh 1: Rata-rata kolom tertentu di setiap baris

Kode berikut menunjukkan cara menghitung nilai rata-rata kolom game1 dan game3 untuk setiap baris dalam bingkai data:

 library (dplyr)

#calculate mean of game1 and game3
df %>%
  rowwise() %>% 
  mutate(mean_points = mean(c(game1, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 mean_points
           
1 22 12 NA 22  
2 25 10 15 20  
3 29 6 15 22  
4 13 6 18 15.5
5 22 8 22 22  
6 30 11 13 21.5

Dari hasilnya kita dapat melihat:

  • Nilai rata-rata game1 dan game3 pada baris pertama adalah 22 .
  • Nilai rata-rata game1 dan game3 pada baris kedua adalah 20 .
  • Nilai rata-rata game1 dan game3 pada baris ketiga adalah 22 .

Dan seterusnya.

Contoh 2: Jumlah maksimum kolom tertentu di setiap baris

Kode berikut menunjukkan cara menghitung nilai maksimum kolom game2 dan game3 untuk setiap baris dalam bingkai data:

 library (dplyr)

#calculate max of game2 and game3
df %>%
  rowwise() %>% 
  mutate(max_points = max(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 max_points
          
1 22 12 NA 12
2 25 10 15 15
3 29 6 15 15
4 13 6 18 18
5 22 8 22 22
6 30 11 13 13

Dari hasilnya kita dapat melihat:

  • Nilai maksimal game2 dan game3 pada baris pertama adalah 12 .
  • Nilai maksimal game2 dan game3 pada baris kedua adalah 15 .
  • Nilai maksimal game2 dan game3 pada baris ketiga adalah 15 .

Dan seterusnya.

Contoh 3: Simpangan baku kolom tertentu di setiap baris

Kode berikut menunjukkan cara menghitung standar deviasi nilai pada kolom game2 dan game3 untuk setiap baris dalam bingkai data:

 library (dplyr)

#calculate standard deviation of game2 and game3
df %>%
  rowwise() %>% 
  mutate(sd_points = sd(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 sd_points
         
1 22 12 NA NA   
2 25 10 15 3.54
3 29 6 15 6.36
4 13 6 18 8.49
5 22 8 22 9.90
6 30 11 13 1.41

Dari hasilnya kita dapat melihat:

  • Simpangan baku game2 dan game3 pada baris pertama adalah NA (karena simpangan baku tidak dapat dihitung dari satu nilai).
  • Simpangan baku game2 dan game3 pada baris kedua adalah 3,54 .
  • Simpangan baku game2 dan game3 pada baris pertama 6,36 .

Dan seterusnya.

Catatan : Anda dapat menemukan dokumentasi lengkap fungsi rowwise() di dplyr di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya menggunakan dplyr:

Cara menghitung nilai yang berbeda menggunakan dplyr
Cara menjumlahkan beberapa kolom menggunakan dplyr
Cara mengganti beberapa nilai dalam satu bingkai data menggunakan dplyr

Tambahkan komentar

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