आर

2011-10-12 6 views
29

में हिस्टोग्राम से आवृत्ति मूल्य प्राप्त करना मुझे पता है कि हिस्टोग्राम या अन्य आवृत्ति/प्रतिशत संबंधित तालिकाओं को कैसे आकर्षित किया जाए। लेकिन अब मैं जानना चाहता हूं, तथ्य के बाद उपयोग करने के लिए मैं उन आवृत्ति मानों को तालिका में कैसे प्राप्त कर सकता हूं।आर

मेरे पास एक विशाल डेटासेट है, अब मैं एक सेट बिनविड्थ के साथ हिस्टोग्राम खींचता हूं। मैं आवृत्ति मान (यानी वाई-अक्ष पर मान) निकालना चाहता हूं जो प्रत्येक बिनविड्थ से मेल खाता है और इसे कहीं सेव करता है।

क्या कोई मेरी मदद कर सकता है? धन्यवाद!

उत्तर

18
?hist से

: मूल्य

वर्ग "हिस्टोग्राम" जो घटकों के साथ एक सूची है की एक वस्तु:

  • टूटता n + 1 सेल सीमाओं (= टूट जाता है कि अगर एक वेक्टर था)। ये नाममात्र ब्रेक हैं, सीमा फज़ के साथ नहीं।
  • गणना एन पूर्णांक; प्रत्येक सेल के लिए, x [] के अंदर की संख्या।
  • घनत्व मान f^(x [i]), अनुमानित घनत्व मान के रूप में। यदि सभी (diff (breaks) == 1), वे सापेक्ष आवृत्तियों की गणना/n हैं और आम तौर पर योग को संतुष्ट करते हैं [i; एफ^(एक्स [i]) (बी [i + 1] -b [i])] = 1, जहां बी [i] = ब्रेक [i]।
  • तीव्रता घनत्व के समान ही है। बहिष्कृत, लेकिन संगतता के लिए बनाए रखा।
  • एन सेल midpoints mids।
  • वास्तविक x तर्क नाम के साथ एक वर्ण स्ट्रिंग xname।
  • इक्विडिस्ट लॉजिकल, यह दर्शाता है कि ब्रेक के बीच की दूरी समान है।

breaks और density बस उपलब्ध कराने के बारे में आप सभी की जरूरत:

histrv<-hist(x) 
histrv$breaks 
histrv$density 
36

hist समारोह की वापसी मूल्य (कक्षा histogram की एक वस्तु) है:

R> res <- hist(rnorm(100)) 
R> res 
$breaks 
[1] -4 -3 -2 -1 0 1 2 3 4 

$counts 
[1] 1 2 17 27 34 16 2 1 

$intensities 
[1] 0.01 0.02 0.17 0.27 0.34 0.16 0.02 0.01 

$density 
[1] 0.01 0.02 0.17 0.27 0.34 0.16 0.02 0.01 

$mids 
[1] -3.5 -2.5 -1.5 -0.5 0.5 1.5 2.5 3.5 

$xname 
[1] "rnorm(100)" 

$equidist 
[1] TRUE 

attr(,"class") 
[1] "histogram" 
+0

आहा, बस वही विचार मिला और इसे पोस्ट करना चाहता था! आप तेज़ थे :-) – TMS

+6

आपको यह भी ध्यान रखना होगा कि उसे 'प्लॉट = FALSE' का उपयोग करना चाहिए, ताकि वह केवल हिस्टोग्राम की साजिश किए बिना परिणाम प्राप्त कर सके। – TMS

+0

हिस्ट के बिना कोई रास्ता है? मैं कस्टम ब्रेक के साथ हिस्ट बनाने की कोशिश कर रहा हूं और यह काम नहीं करता है। क्या कुछ और हो सकता है? – xealits

2

शायद ज़रुरत पड़े किसी हिट ggplot के geom_histogram के साथ यह प्रश्न दिमाग में है, ध्यान दें कि ggplot ऑब्जेक्ट से डेटा निकालने का एक तरीका है।

निम्नलिखित सुविधा समारोह प्रत्येक बिन (xmin), प्रत्येक बिन (xmax) की ऊपरी सीमा की निचली सीमा के साथ एक dataframe आउटपुट, प्रत्येक बिन (x), और साथ ही आवृत्ति मूल्य का मध्य बिंदु (y)।

## Convenience function 
get_hist <- function(p) { 
    d <- ggplot_build(p)$data[[1]] 
    data.frame(x = d$x, xmin = d$xmin, xmax = d$xmax, y = d$y) 
} 

# make a dataframe for ggplot 
set.seed(1) 
x = runif(100, 0, 10) 
y = cumsum(x) 
df <- data.frame(x = sort(x), y = y) 

# make geom_histogram 
p <- ggplot(data = df, aes(x = x)) + 
    geom_histogram(aes(y = cumsum(..count..)), binwidth = 1, boundary = 0, 
       color = "black", fill = "white") 

उदाहरण:

hist = get_hist(p) 
head(hist$x) 
## [1] 0.5 1.5 2.5 3.5 4.5 5.5 
head(hist$y) 
## [1] 7 13 24 38 52 57 
head(hist$xmax) 
## [1] 1 2 3 4 5 6 
head(hist$xmin) 
## [1] 0 1 2 3 4 5 

इससे संबंधित एक सवाल मैं यहाँ जवाब (Cumulative histogram with ggplot2)।