Cara memilih baris pertama berdasarkan grup menggunakan dplyr


Seringkali, Anda mungkin ingin memilih baris pertama setiap grup menggunakan paket dplyr di R. Anda dapat menggunakan sintaks dasar berikut untuk melakukan ini:

 df %>%
  group_by (group_var) %>%
  arrange (values_var) %>%
  filter (row_number()== 1 )

Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.

Contoh: pilih baris pertama berdasarkan grup di R

Misalkan kita memiliki kumpulan data berikut di R:

 #create dataset
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C' ),
                 points=c(4, 9, 7, 7, 6, 13, 8, 8, 4, 17))

#view dataset
df

   team points
1 to 4
2 to 9
3 to 7
4 B 7
5 B 6
6 B 13
7 C 8
8 C 8
9 C 4
10 C 17

Kode berikut menunjukkan cara menggunakan paket dplyr untuk memilih baris pertama berdasarkan grup di R:

 library (dplyr)

df %>%
  group_by (team) %>%
  arrange (points) %>%
  filter (row_number()== 1 )

# A tibble: 3 x 2
# Groups: team [3]
  team points
    
1 to 4
2 C 4
3 B 6

Secara default, arrange() mengurutkan nilai dalam urutan menaik tetapi kita dapat dengan mudah mengurutkan nilai dalam urutan menurun:

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== 1 )

# A tibble: 3 x 2
# Groups: team [3]
  team points
    
1 C 17
2 B 13
3 to 9

Perhatikan bahwa Anda dapat dengan mudah mengubah kode ini untuk memilih baris ke-n di setiap grup. Ubah saja row_number() == n .

Misalnya, jika Anda ingin memilih baris ke-2 berdasarkan grup, Anda dapat menggunakan sintaks berikut:

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== 2 )

Atau Anda dapat menggunakan sintaks berikut untuk memilih baris terakhir berdasarkan grup:

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== n() )

Sumber daya tambahan

Cara menyusun garis di R
Cara menghitung observasi per kelompok di R
Bagaimana menemukan nilai maksimum per grup di R

Tambahkan komentar

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