2011-09-29 36 views

Trả lời

4

Bạn chỉ có thể sử dụng lệnh seq. Ví dụ,

##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" 

hoặc

##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" 

Để chỉ nhận được ngày làm việc, bạn có thể sử dụng thư viện chron:

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

cảm ơn câu trả lời của bạn nhưng tôi không muốn ngày cuối tuần ... – Eva

14

@csgillespie: chron cung cấp các chức năng 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) 

Bên cạnh đó, bạn có thể nhận được kết quả tương tự mà không cần sử dụng chronformat:

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

Có một chức năng base gọi ?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")] 

Tuy nhiên, vì tên thực tế của ngày sẽ là ngôn ngữ cụ thể, hãy đảm bảo đặt chính xác.

Lưu ý rằng weekdays chỉ là trình bao bọc trên format(x, "%A"). Xem ?strptime để biết chi tiết về mã định dạng.

Các vấn đề liên quan