2012-04-25 9 views
5

के आधार पर डेटा निकालने मैं एक बहुत बड़ा डेटा अलग अलग आबादी से genotypic जानकारी के साथ निर्धारित किया है। मैं जनसंख्या से डेटा को सॉर्ट करना चाहता हूं, लेकिन मुझे नहीं पता कि कैसे।सबसेट डेटा/पहले 7 पत्र

मैं "pedigree_dhl" के आधार पर सॉर्ट करना चाहते हैं। मैं निम्नलिखित कोड का उपयोग कर रहा था, लेकिन मुझे त्रुटि संदेश मिलते रहे।

newdata <- project[pedigree_dhl == CCB133$*1, ] 

मेरे समस्या भी है, कि 'वंशावली-डीएचएल' व्यक्तिगत जीनोटाइप के सभी नाम शामिल हैं। कॉलम 'वंशावली-डीएचएल' कॉलम में केवल पहले 7 अक्षर आबादी का नाम हैं। इस उदाहरण में: सीसीबी 133। मैं आर को कैसे बता सकता हूं, कि मैं सभी कॉलम के लिए डेटा निकालना चाहता हूं, जिसमें सीसीबी 133 है?

Allele1 Allele2  SNP_name gs_entry pedigree_dhl 
1  T  T ZM011407_0151  656 CCB133$*1 
2  T  T ZM009374_0354  656 CCB133$*1 
3  C  C ZM003499_0591  656 CCB133$*1 
4  A  A ZM003898_0594  656 CCB133$*1 
5  C  C ZM004887_0313  656 CCB133$*1 
6  G  G ZM000583_1096  656 CCB133$*1 
+2

'substr' आप एक चरित्र वेक्टर के सबस्ट्रिंग निकालने के लिए अनुमति देता है। आप यह सुनिश्चित करना चाहते हैं कि आपका कॉलम वास्तव में एक वर्ण वेक्टर है और 'substr' का उपयोग करने से पहले एक कारक नहीं है या आपको कुछ अप्रत्याशित परिणाम मिल सकते हैं। सबसेटिंग के लिए, 'आर सबसेट' के लिए SO खोजें और आपको कई जवाब मिलेंगे। 'सबसेट()' फ़ंक्शन स्वयं इंटरैक्टिव सत्र के लिए काफी उपयोगी है, जबकि '[' ऑपरेटर का उपयोग कुछ स्थितियों में किया जाता है। – Chase

उत्तर

5

आप Using regexp to select rows in R dataframe पर जवाब के रूप में grep विचार कर सकते हैं। अपने डेटा के लिए अनुकूलित:

df <- read.table(text=" Allele1 Allele2  SNP_name gs_entry pedigree_dhl 
1  T  T ZM011407_0151  656 CCB133$*1 
2  T  T ZM009374_0354  656 CCB133$*1 
3  C  C ZM003499_0591  656 CCB133$*1 
4  A  A ZM003898_0594  656 CCB133$*1 
5  C  C ZM004887_0313  656 CCB133$*1 
6  G  G ZM000583_1096  656 CCB133$*1", header=T) 

# put into df1 all rows where pedigree_dhl starts with CCB133$ 
p1 <- 'CCB133$' 
df1 <- subset(df, grepl(p1, pedigree_dhl)) 

लेकिन आपके सवाल का तात्पर्य आप सात पत्र नाम का चयन करने के लिए, या सिर्फ वंशावली नाम से पंक्तियों क्रमबद्ध करना चाहते हो सकता है कि और यह सभी पंक्तियों एक हल कर में एक साथ रखने के लिए आसान हो सकता है डेटा ढांचा। ये सभी तीन ऑपरेशन: उप-सेटिंग, एक नया कॉलम निकालने, या सॉर्टिंग, स्वतंत्र रूप से किया जा सकता है।

# If you want to create a new column based 
# on the first seven letter of SNP_name (or any other variable) 

df$SNP_7 <- substr(df$SNP_name, start=1, stop=7) 

# If you want to order by pedigree_dhl 
# then you don't need to select out the rows into a new dataframe 

df <- df[ with(df, order(df$pedigree_dhl)), ] 

यह सब स्पष्ट हो सकता है - मैं उन्हें पूर्णता के लिए जोड़ता हूं।

+0

'2.14 के रूप में read.table', मुझे लगता है, अब सीधे पाठ तर्क लेता है, के लिए' textConnection' –

+0

धन्यवाद @Tyler Rinker कोई जरूरत नहीं है जिसका अर्थ है; पुरानी आदतें मुश्किल से जाती हैं। हालांकि मैंने इसे सफलता के साथ कोशिश की। मैंने 'help' में भी देखा और देखा कि' फ़ाइल' पैरामीटर स्थानीय फ़ाइल, टेक्स्ट कनेक्शन या यूआरएल का मार्ग हो सकता है। विकल्पों को देखने में खुशी है, हालांकि, एक संपादन में, क्योंकि मुझे ऐसा करने का एक और शानदार तरीका पसंद आएगा। – gauden

+1

मैंने आपके लिए संपादन जोड़ा। –

संबंधित मुद्दे