Cara menghitung nilai unik berdasarkan grup di r (dengan contoh)


Anda dapat menggunakan metode berikut untuk menghitung jumlah nilai unik per grup di R:

Metode 1: Gunakan Basis R

 results <- aggregate(data=df, values_var~group_var, function (x) length ( unique (x)))

Metode 2: gunakan dplyr

 library (dplyr)

results <- df %>%
  group_by(group_var) %>%
  summarize(count = n_distinct (values_var))

Metode 3: Menggunakan data.tabel

 library (data.table)

df <- data.table(df)
results <- df[, .(count = length ( unique (values_var))), by = group_var]

Setiap metode mengembalikan hasil yang persis sama, tetapi metode dasar R cenderung lebih lambat secara signifikan ketika bekerja dengan frame data yang besar.

Contoh berikut menunjukkan cara menggunakan masing-masing metode ini dalam praktik dengan kerangka data berikut:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 10, 14, 14, 18, 19, 20, 20, 20))

#view data frame
df

  team points
1 to 10
2 to 10
3 to 14
4 to 14
5 B 18
6 B 19
7 C 20
8 C 20
9 C 20

Metode 1: Hitung nilai unik berdasarkan grup menggunakan Basis R

Kode berikut menunjukkan cara menghitung jumlah nilai poin yang berbeda untuk setiap tim menggunakan basis R:

 #count unique points values by team
results <- aggregate(data=df, points~team, function (x) length ( unique (x)))

#view results
results

  team points
1 TO 2
2 B 2
3 C 1

Dari hasilnya kita dapat melihat:

  • Ada 2 nilai poin unik untuk Tim A.
  • Ada 2 nilai poin unik untuk Tim B.
  • Ada 1 nilai poin unik untuk Tim C.

Metode 2: Hitung nilai unik berdasarkan grup menggunakan dplyr

Kode berikut menunjukkan cara menghitung jumlah nilai poin yang berbeda untuk setiap tim menggunakan dplyr:

 library (dplyr)

#count unique points values by team
results <- df %>%
  group_by(team) %>%
  summarize(count = n_distinct (points))

#view results
results

# A tibble: 3 x 2
  team count
1 TO 2
2 B 2
3 C 1

Perhatikan bahwa hasil ini cocok dengan metode dasar R.

Metode 3: Hitung nilai unik berdasarkan grup menggunakan data.table

Kode berikut menunjukkan cara menghitung jumlah nilai poin yang berbeda untuk setiap tim menggunakan data.table:

 library (data.table)

#convert data frame to data table
df <- data.table(df)

#count unique points values by team 
results <- df[, .(count = length ( unique (points))), by = team]

#view results
results

   team count
1 TO 2
2:B2
3: C 1

Perhatikan bahwa hasil ini cocok dengan dua metode sebelumnya.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya menggunakan dplyr:

Cara mengkode ulang nilai menggunakan dplyr
Bagaimana cara mengganti NA dengan Zero di dplyr
Cara mengurutkan variabel berdasarkan kelompok menggunakan dplyr
Cara memilih baris pertama berdasarkan grup menggunakan dplyr

Tambahkan komentar

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