2011-09-29 11 views
10

मैं श्रेणी में सभी व्यापार तिथियों के साथ एक समय श्रृंखला उत्पन्न करना चाहते जनरेट कर रहा है:एक विशिष्ट आरंभ और समाप्ति तिथि के साथ एक समय श्रृंखला

startDate = "1990-01-01" 
endDate = "1990-12-31" 

उदाहरण के लिए "1990/01/01", "1990-1901 -02 ", ...

उत्तर

4

आप केवल seq कमांड का उपयोग कर सकते हैं। उदाहरण के लिए,

##Specify you want 10 dates starting on 1990-01-01 
R> seq(as.Date("1990-01-01"), length.out=10, by="1 day") 
[1] "1990-01-01" "1990-01-02" "1990-01-03" "1990-01-04" "1990-01-05" 
[6] "1990-01-06" "1990-01-07" "1990-01-08" "1990-01-09" "1990-01-10" 

या

##Specify the start and end with increment 
R> seq(as.Date("1990-01-01"), as.Date("1990-01-10"), by="1 day") 
[1] "1990-01-01" "1990-01-02" "1990-01-03" "1990-01-04" "1990-01-05" 
[6] "1990-01-06" "1990-01-07" "1990-01-08" "1990-01-09" "1990-01-10" 

सिर्फ व्यावसायिक दिनों के लिए, आप chron लाइब्रेरी का उपयोग कर सकते हैं:

days = seq(as.Date("1990-01-01"), as.Date("1990-12-31"), by="1 day") 
library(chron) 
weekDays = days[!is.weekend(days)] 
+0

आपके उत्तर के लिए धन्यवाद लेकिन मैं सप्ताहांत नहीं चाहता ... – Eva

14

@csgillespie:

: chron समारोह is.weekend प्रदान करता है
days = seq(as.Date("1990-01-01"), as.Date("1990-12-31"), by="1 day") 
library(chron) 
weekDays = days[!is.weekend(days)] 

## let's check the result with the function weekdays 
weekdays(weekDays) 

इसके अलावा, आप chronformat का उपयोग किए बिना एक ही परिणाम प्राप्त कर सकते हैं:

isWeekend <- function(x) {format(x, '%w') %in% c(0, 6)} 
weekDays2 = days[!isWeekend(days)] 
1

एक base समारोह ?weekdays कहा जाता है।

startDate = "1990-01-01" 
endDate = "1990-12-31" 

x <- seq(as.Date(startDate), to = as.Date(endDate), by="1 day") 

x[!weekdays(x) %in% c("Sunday", "Saturday")] 

लेकिन, क्योंकि दिनों के वास्तविक नाम लोकेल-विशिष्ट होंगे, इसलिए उन्हें सही ढंग से सेट करना सुनिश्चित करें।

ध्यान दें कि weekdaysformat(x, "%A") पर सिर्फ एक रैपर है। प्रारूप कोड के विवरण के लिए ?strptime देखें।

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