यह एक स्वच्छंद जवाब है, लेकिन कारण यह है कि इस एक ही बार में करने के लिए कठिन है कि आपके डेटा साफ नहीं है। इसका मतलब है कि इस मामले में आप प्रत्येक पंक्ति को एक अवलोकन करना चाहते हैं।
library(dplyr)
df <- read.table(header = TRUE, text = 'Project Gender Rank order
100 1 3 A
100 0 1 B
100 1 2 C
200 1 2 A
200 1 2 B
200 NA NA C
300 0 3 A
300 1 3 B
300 0 2 C')
df %>% group_by(Project) %>% arrange(-Rank) %>% slice(1) %>% ungroup()
कि अंतिम पंक्ति की व्याख्या करने के लिए, परियोजना द्वारा समूह आप, तरह सभी रैंक के आधार पर उन परियोजनाओं में स्कोर, तो पहले के लिए फ़िल्टर, और अंत में: मैं 'साफ' प्रतिनिधित्व और एक समाधान dplyr
पैकेज का उपयोग देना , अच्छे उपाय के लिए, आप समूह को भूल जाते हैं, जिसका अर्थ है कि आप समूह को भूल जाते हैं। आपका आउटपुट तब प्रत्येक प्रोजेक्ट के लिए उच्चतम स्कोरिंग रिकॉर्ड है, जिसमें इसके स्कोर, लिंग शामिल हैं। ध्यान दें कि मैंने 'रैंक ए' या 'रैंक बी' इत्यादि के तहत डेटा को बनाए गए तथ्य को दर्शाने के लिए एक नया चर 'ऑर्डर' भी लगाया है।
आउट:
| Project| Gender| Rank|order |
|-------:|------:|----:|:-----|
| 100| 1| 3|A |
| 300| 0| 3|A |
| 200| 1| 2|A |
साफ प्रतिनिधित्व में डेटा को अलग रूप में अच्छी तरह से किया जा सकता है, लेकिन क्या आप पहली जगह में डेटा दर्ज करने के बाद कैसे को देखने के लिए चाहते हो सकता है। यह साफ-सफाई के लिए है, लेकिन व्यापक पढ़ने के लिए आप http://vita.had.co.nz/papers/tidy-data.pdf देख सकते हैं।
| Project|order | Gender| Rank|
|-------:|:-----|------:|----:|
| 100|A | 1| 3|
| 100|B | 0| 1|
| 100|C | 1| 2|
| 200|A | 1| 2|
| 200|B | 1| 2|
| 200|C | NA| NA|
| 300|A | 0| 3|
| 300|B | 1| 3|
| 300|C | 0| 2|
| 400|A | 0| 1|
| 400|B | NA| NA|
| 400|C | NA| NA|
| 500|A | 1| 1|
| 500|B | 0| 2|
| 500|C | 1| 1|
फिर आप को खिलाने के कर सकते हैं:
ग्रेगर की टिप्पणी के लिए धन्यवाद, यहाँ एक तरह से एक और अधिक सुव्यवस्थित प्रतिनिधित्व में अपने dataframe कन्वर्ट करने के लिए
library(tidyr)
df <- read.table(header = TRUE, text = 'Project GenderA RankA GenderB RankB GenderC RankC
100 1 3 0 1 1 2
200 1 2 1 2 NA NA
300 0 3 1 3 0 2
400 0 1 NA NA NA NA
500 1 1 0 2 1 1')
df %>% gather(key = key, value = value, -Project) %>% separate(key, into = c("variable", "order"), sep = -2) %>% spread(key = variable, value = value)
आउट (पैकेज tidyr
का उपयोग) है यह आपके समाधान को प्राप्त करने के लिए पहले भाग में सूत्र में है।
आप संबंधों को कैसे संभालना चाहते थे? – ulfelder