2013-02-28 1 views
4

시작 날짜는 start이고 마지막 날짜는 maturity입니다. 주말 날짜를 고려하지 않고 날짜가있는 벡터를 어떻게 채울 수 있습니까? 예를 들어 ,의 말을하자평일에만 벡터를 입력하십시오

> start = as.Date("2013-02-28"); 
> maturity = as.Date("2013-03-07"); 

나는 결과로 다음과 같은 벡터를 좀하고 싶습니다 :

results 
[1] "2013-03-01" "2013-03-04" "2013-03-05" "2013-03-06" "2013-03-07" 



> start = as.Date("2013-02-28"); 
> maturity = as.Date("2013-03-07"); 
> x <- seq(start,maturity,by = 1) 
> x 
[1] "2013-02-28" "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05" 
[7] "2013-03-06" "2013-03-07" 
> x <- x[!weekdays(x) %in% c('Saturday','Sunday')] 
> x 
[1] "2013-02-28" "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05" 
[7] "2013-03-06" "2013-03-07" 

같은 결과를 ...?

답변

7

여러 패키지에서 다양한 기능으로이 작업을 수행 할 수있는 방법은 수십억 가지입니다. 하지만 내 생각은 단순히 시퀀스를 만들고 주말을 제거하는 것입니다.

x <- seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1) 
x <- x[!weekdays(x) %in% c('Saturday','Sunday')] 

이 답변은 영어 기반 시스템에서만 유효합니다. 예를 들어, 프랑스어 버전에서, '토요일'과 '일요일' 'SAMEDI'와 'dimanche'

3

: @joran 대답보다는이 적은 사람,로 번역해야하지만

를 따라 로컬 시간입니다
dd <- seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1) 
dd[! (as.POSIXlt(dd)$wd %in% c(0,1))] 

PS : 또 다른 옵션은 weekdays

tt <- Sys.getlocale('LC_TIME') 
Sys.setlocale('LC_TIME','ENGLISH') 
dd <- dd[!weekdays(x) %in% c('Saturday','Sunday')] 
Sys.setlocale('LC_TIME',tt) 
을 적용하기 전에 지역 주민을 설정하는 것입니다
관련 문제