2011-01-26 12 views
5

मैं 2 कॉलम, पहले युक्त दिनांक, और दूसरा युक्त समय के साथ एक डेटा फ्रेम से निपटना:प्रारूप में, दिनांक और आर में बार

 date   time   
[1,] "2003-10-03" "22:32:00" 
[2,] "2003-10-05" "17:43:06" 
[3,] "2003-10-10" "18:45:56" 
[4,] "2003-11-12" "17:07:16" 
[5,] "2003-11-13" "12:48:04" 
[6,] "2003-11-13" "18:17:57" 

मैं इनमें से कुछ हिस्टोग्राम बनाना चाहेंगे डेटा प्रति वर्ष, प्रति माह और दिन के एक विशिष्ट घंटे की घटनाओं की संख्या को देखते हुए।

साल आसान है कि

hist(as.Date(df[,1]), "years") 

अब, महीने प्रति घटनाओं की संख्या (वर्ष disregarding) प्राप्त करने के लिए के लिए मैं प्रयोग किया है:

months = c("January", "February", "March", 
      "April", "May", "June", "July", 
      "August", "September", "October", 
      "November", "December") 
tb <- table(factor(months.Date(dt), levels=months) 
barplot(tb) 

सवाल:

  1. है प्रति माह हिस्टोग्राम करने के लिए एक अच्छा तरीका है?
  2. दिन के समय के लिए मैं वही काम कैसे करूं (प्रति घंटा डिब्बे पर्याप्त हैं)?

धन्यवाद

+4

की तरह कुछ महीने नाम सूचीबद्ध करने के लिए कोई ज़रूरत नहीं कर सकता है। नाम' और 'month.abb' पहले ही अंतर्निहित हैं और आपके सिस्टम की डिफ़ॉल्ट भाषा का उपयोग करते हैं। –

+0

@jonw: जानना अच्छा है, मुझे यह नहीं पता था! – nico

उत्तर

6

मैं XTS का प्रयोग करेंगे, खासकर यदि आप अपने data.frame में दिनांक और समय के अलावा अन्य डेटा है। याद रखें कि `महीने -

df$count <- 1 
x <- xts(df$count,as.POSIXct(paste(df$date,df$time))) 

# create aggregates and plot with plot.zoo() 
plot.zoo(period.apply(x, endpoints(index(x),"years"), sum), type="h") 
plot.zoo(period.apply(x, endpoints(index(x),"quarters"), sum), type="h") 
plot.zoo(period.apply(x, endpoints(index(x),"months"), sum), type="h") 
plot.zoo(period.apply(x, endpoints(index(x),"weeks"), sum), type="h") 
plot.zoo(period.apply(x, endpoints(index(x),"days"), sum), type="h") 
plot.zoo(period.apply(x, endpoints(index(x),"hours"), sum), type="h") 
+0

दिलचस्प लगता है, मुझे इसमें जाना होगा! – nico

4

आप लेबल" 01 "के बजाय जा रहा है कोई आपत्ति नहीं है" जनवरी "आप इस

barplot(table(format(df$date,"%m"))) 
+3

अच्छा विचार। ध्यान दें कि '% बी" 'पूर्ण महीने के नाम और'%% "संक्षेप प्रदान करता है। सभी रूपांतरण विनिर्देशों के लिए '? Strptime' देखें। –

+0

खैर, मुझे नामों की परवाह नहीं है, मैं अक्ष को छुपा दूंगा और वैसे भी उन्हें फिर से लिखूंगा क्योंकि मुझे अंग्रेजी में उनकी आवश्यकता नहीं है :) – nico

+1

मुझे% बी या% बी का विचार पसंद नहीं आया क्योंकि आप प्राकृतिक खो देते हैं महीनों का आदेश। – Dason

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