2016-09-02 4 views
5

मेरे पास आनुवांशिक डेटा है। यह काफी बड़ा है, लगभग 17 000 अनुवांशिक मार्कर (एसएनपी) और 700 व्यक्तियों। इन एसएनपी को एक संस्थापक को सौंपा जा सकता है। अब मैं प्रति 'संस्थापक सेगमेंट' की औसत संभावना की गणना करना चाहता हूं। एक सेगमेंट को गुणसूत्र के एक हिस्से के रूप में परिभाषित किया जाता है जिसे एक संस्थापक को निर्बाध किया जाता है।समान समूहिंग कारकों के साथ समूह के माध्य की गणना कई बार

नीचे दिए गए उदाहरण में मेरे पास 3 सेगमेंट होंगे।
अंत में मैं एक सेगमेंट के भीतर सभी एसएनपी पर औसत संभावना जानना चाहता हूं।

Chromosome SNP Founder Probability 
1  1  7  0.6 
1  2  7  0.5 
1  3  7  0.7 
1  4  2  0.5 
1  5  2  0.8 
1  6  7  0.6 
1  7  7  0.5 

मैं dplyr के साथ आसानी से समूह कर सकते हैं, लेकिन मैं नहीं चाहता कि संस्थापक के साथ अन्य खंड के साथ एक साथ संस्थापक 7 के प्रथम खंड को चाहते हैं 7.

तो क्या मैं चाहता हूँ:

Chromosome SNP Founder Probability Average 
1  1  7  0.6  0.6 
1  2  7  0.5  0.6 
1  3  7  0.7  0.6 
1  4  2  0.5  0.65 
1  5  2  0.8  0.65 
1  6  7  0.6  0.55 
1  7  7  0.5  0.55 

समूह समूह I की गणना कैसे कर सकता हूं जब एक ही समूहबद्ध कारक कई बार होते हैं?

उत्तर

4

dplyr के साथ हम 'गुणसूत्र' के साथ एक समूहीकरण चर बनाने के लिए 'संस्थापक' के आसन्न तत्वों की तुलना कर सकते हैं, और फिर 'संभावना'

library(dplyr) 
library(data.table) 
df1 %>% 
    group_by(Chromosome, grp1 = cumsum(Founder!=lag(Founder, default = Founder[n()]))) %>% 
    mutate(Average = mean(Probability)) 
# Chromosome SNP Founder Probability grp1 Average 
#  <int> <int> <int>  <dbl> <int> <dbl> 
#1   1  1  7   0.6  0 0.60 
#2   1  2  7   0.5  0 0.60 
#3   1  3  7   0.7  0 0.60 
#4   1  4  2   0.5  1 0.65 
#5   1  5  2   0.8  1 0.65 
#6   1  6  7   0.6  2 0.55 
#7   1  7  7   0.5  2 0.55 

या data.table का उपयोग करने का mean मिलता है, हम 'data.frame' से 'data.table' (setDT(df1)) को 'क्रोमॉम' और रन-लम्बाई-प्रकार आईडी (rleid) द्वारा 'संस्थापक' के समूह में परिवर्तित करते हैं, हम "संभाव्यता" के mean को असाइन करते हैं (:=) "औसत" कॉलम।

library(data.table) 
setDT(df1)[, Average := mean(Probability) , .(Chromosome, grp1 = rleid(Founder))] 
+1

आपको बहुत बहुत धन्यवाद! यह मेरा पहला सवाल था। अंत में मैंने data.table विकल्प का उपयोग किया। 'dplyr' ने मुझे दिया: 'त्रुटि: एक मान की उम्मीद है'। डेटाटेबल विकल्प मेरे संस्थापक चर को ओवरराइट करता है, यह आसानी से फिर से बदला जा सकता था। तो, समस्या हल हो गई। :) – tboersma

+0

@ टॉर्सरमा मैं 'dplyr_0.5.0' का उपयोग कर रहा हूं। यह आपके उदाहरण डेटासेट – akrun

+0

के साथ काम कर रहा है मैं 'dplyr_0.4.3' और 'plyr_1.8.4'' का उपयोग कर रहा हूं। यह अभी भी मुझे 'त्रुटि: एकल मान की उम्मीद' देता है। मेरे डेटा में 4 और कॉलम हैं, लेकिन इससे कोई फर्क नहीं पड़ता। – tboersma

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