2015-10-14 12 views
5

पर quantile लागू करने के लिए मैं एक data.frame है और मैं बनाने के लिए उस पर quantile लागू करना चाहते हैं डेटा देखने के लिए सरल:कैसे एक dataframe

> head(Quartile) 
      GSM1321374 GSM1321375 GSM1321376 GSM1321377 GSM1321378 GSM1321379 
1415670_at 11.203302 11.374616 10.876187 11.23639 11.02051 10.926481 
1415671_at 11.196427 11.492769 11.493717 11.01683 11.15016 11.576188 
1415672_at 11.550974 11.267559 11.800991 11.57551 10.93359 11.222779 
1415673_at 11.293390 10.978280 11.367316 10.45135 10.35822 10.234964 
1415674_a_at 9.254073 10.572670 9.361991 11.26998 10.21125 10.245857 
1415675_at  9.922985 9.228195 9.798156 10.02844 10.19928 9.749947 

मैं निम्नलिखित समारोह आवेदन किया है और यह काम किया है।

quantfun <- function(x) as.integer(cut(x, quantile(x, probs=0:4/4), include.lowest=TRUE)) 
a <- apply(Quartile,1,quantfun) 
b <- t(a) 
colnames(b) <- colnames(Quartile) 

और उत्पादन होता है:

> head(b) 
      GSM1321374 GSM1321375 GSM1321376 GSM1321377 GSM1321378 GSM1321379 
1415670_at   3   4   1   4   2   1 
1415671_at   2   3   4   1   1   4 
1415672_at   3   2   4   4   1   1 
1415673_at   4   3   4   2   1   1 
1415674_a_at   1   4   1   4   2   3 
1415675_at   3   1   2   4   4   1 

लेकिन समस्या यह है इसे अलग से प्रत्येक स्तंभ पर quantile लागू होता है और मैं पूरी data.frame के लिए एक समान quantile चाहते हैं।

> duration = Quartile$GSM1321374 
> quantile(duration) 
     0%  25%  50%  75%  100% 
9.254073 9.922985 11.120381 11.203302 11.550974 
> duration = Quartile$GSM1321375 
> quantile(duration) 
     0%  25%  50%  75%  100% 
9.228195 10.572670 10.946407 11.267559 11.492769 
+1

कोशिश' चतुर्थांश [] <: आप मूल डेटा फ्रेम बरकरार छोड़ दें और एक प्रति का उपयोग करना चाहते हैं । –

+0

@Pierre Lafortune और मैं मात्रा की अवधि कैसे देख सकता हूं ..? – user3253470

+0

क्या आप 'क्वांटाइल (असूची (क्वार्टाइल)) की तलाश में हैं? –

उत्तर

2

अपने डिब्बे पाने के लिए पहले अपने डेटा फ्रेम के चतुर्थक पर्वतमाला खोजें:

quantile(unlist(Quartile)) 
     0%  25%  50%  75%  100% 
9.228195 10.229036 10.997555 11.275832 11.800991 

अब हम प्रत्येक समूह के लिए पर्वतमाला है (अर्थात 9.228-10.229)। तब चतुर्थांश डेटा फ्रेम बनाने:

Quartile[] <- matrix(quantfun(unlist(Quartile)), nrow(Quartile)) 

हम इस तथ्य का उपयोग कर रहे है कि unlist(Quartile) व्यवहार करता है वेक्टर के रूप में डेटा फ्रेम। लागू समारोह के बजाय मैट्रिक्स (quantfun (असूचीबद्ध (चतुर्थांश)), Nrow (चतुर्थांश)) `-

Quartile2 <- Quartile 
Quartile2[] <- matrix(quantfun(unlist(Quartile2)), nrow(Quartile2)) 
संबंधित मुद्दे