आर में समूह द्वारा अद्वितीय मानों की गणना कैसे करें (उदाहरण के साथ)
आप R में प्रति समूह अद्वितीय मानों की संख्या गिनने के लिए निम्नलिखित विधियों का उपयोग कर सकते हैं:
विधि 1: बेस आर का उपयोग करें
results <- aggregate(data=df, values_var~group_var, function (x) length ( unique (x)))
विधि 2: dplyr का उपयोग करें
library (dplyr) results <- df %>% group_by(group_var) %>% summarize(count = n_distinct (values_var))
विधि 3: डेटा.टेबल का उपयोग करना
library (data.table)
df <- data.table(df)
results <- df[, .(count = length ( unique (values_var))), by = group_var]
प्रत्येक विधि बिल्कुल समान परिणाम देती है, लेकिन बड़े डेटा फ़्रेम के साथ काम करते समय आधार आर विधि काफी धीमी हो जाती है।
निम्नलिखित उदाहरण दिखाते हैं कि निम्नलिखित डेटा फ़्रेम के साथ व्यवहार में इनमें से प्रत्येक विधि का उपयोग कैसे करें:
#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
विधि 1: बेस आर का उपयोग करके समूह द्वारा अद्वितीय मानों की गणना करें
निम्नलिखित कोड दिखाता है कि बेस आर का उपयोग करके प्रत्येक टीम के लिए अलग-अलग बिंदु मानों की संख्या कैसे गिनें:
#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
परिणाम से हम देख सकते हैं:
- टीम ए के लिए 2 अद्वितीय बिंदु मान हैं।
- टीम बी के लिए 2 अद्वितीय बिंदु मान हैं।
- टीम सी के लिए 1 अद्वितीय अंक मान है।
विधि 2: dplyr का उपयोग करके समूह द्वारा अद्वितीय मानों की गणना करें
निम्नलिखित कोड दिखाता है कि 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
ध्यान दें कि ये परिणाम आधार आर पद्धति से मेल खाते हैं।
विधि 3: डेटा.टेबल का उपयोग करके समूह द्वारा अद्वितीय मानों की गणना करें
निम्नलिखित कोड दिखाता है कि 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
ध्यान दें कि ये परिणाम पिछली दो विधियों से मेल खाते हैं।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि dplyr का उपयोग करके अन्य सामान्य ऑपरेशन कैसे करें:
Dplyr का उपयोग करके मानों को कैसे रिकोड करें
dplyr में NA को शून्य से कैसे बदलें
Dplyr का उपयोग करके समूह द्वारा चरों को कैसे क्रमबद्ध करें
dplyr का उपयोग करके समूह द्वारा पहली पंक्ति का चयन कैसे करें