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