Dplyr: cara meringkas data tetapi mempertahankan semua kolom


Saat menggunakan fungsi summarise() di dplyr , variabel apa pun yang tidak termasuk dalam fungsi summarise() atau group_by() akan dihapus secara otomatis.

Namun, Anda bisa menggunakan fungsi mutate() untuk meringkas data sambil mempertahankan semua kolom dalam bingkai data.

Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.

Contoh: Ringkas data tetapi pertahankan semua kolom menggunakan dplyr

Misalkan kita mempunyai kerangka data berikut yang berisi informasi tentang berbagai pemain bola basket:

 #create data frame
df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 3 ),
                 points=c(4, 9, 8, 12, 15, 14, 29, 30, 22),
                 assists=c(3, 3, 2, 5, 8, 10, 4, 5, 12))

#view data frame
df

  team points assists
1 to 4 3
2 to 9 3
3 to 8 2
4 B 12 5
5 B 15 8
6 B 14 10
7 C 29 4
8 C 30 5
9 C 22 12

Kita dapat menggunakan sintaks berikut untuk merangkum rata-rata poin yang dicetak per tim :

 library (dplyr)

#summarize mean points values by team
df %>%
  group_by(team) %>%
  summarize(mean_pts = mean(points))

# A tibble: 3 x 2
  team mean_pts
      
1 to 7  
2 B 13.7
3 C 27

Kolom bernama Mean_pts menampilkan rata-rata poin yang dicetak oleh masing-masing tim.

Dari hasilnya kita dapat melihat:

  • Rata-rata poin yang dicetak pemain tim A adalah 7 .
  • Rata-rata poin yang dicetak pemain tim B adalah 13,7 .
  • Rata-rata poin yang dicetak pemain tim C adalah 27 .

Namun, katakanlah kita ingin mempertahankan semua kolom lainnya dari bingkai data asli.

Kita dapat menggunakan sintaks berikut dengan fungsi mutate() untuk melakukan ini:

 library (dplyr)

#summarize mean points values by team and keep all columns
df %>%
  group_by(team) %>%
  mutate(mean_pts = mean(points)) %>%
  A group()

# A tibble: 9 x 4
  team points assists mean_pts
           
1 to 4 3 7  
2 to 9 3 7  
3 to 8 2 7  
4 B 12 5 13.7
5 B 15 8 13.7
6 B 14 10 13.7
7 C 29 4 27  
8 C 30 5 27  
9 C 22 12 27

Dengan menggunakan fungsi mutate() , kita dapat membuat kolom baru bernama Mean_pts yang merangkum rata-rata poin yang dicetak per tim sambil mempertahankan semua kolom lain dari bingkai data asli.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di dplyr:

dplyr: Cara memutasi variabel jika kolom berisi string
dplyr: Cara mengubah level faktor menggunakan mutate()
dplyr: Cara menambahkan beberapa kolom

Tambahkan komentar

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