반응형
두 날짜 사이의 모든 날로 구성된 벡터 만들기
R에서 지정된 두 날짜 사이에 발생한 모든 유효한 날짜를 항목 화하는 쉬운 방법이 있습니까? 예를 들어, 다음 입력을 원합니다.
itemizeDates(startDate="12-30-11", endDate="1-4-12")
다음 날짜를 생성하려면 :
"12-30-11" "12-31-11", "1-1-12", "1-2-12", "1-3-12", "1-4-12"
나는 수업과 날짜 형식에 유연하며 개념의 구현이 필요합니다.
당신은 찾고 있습니다 seq
> seq(as.Date("2011-12-30"), as.Date("2012-01-04"), by="days")
[1] "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03"
[6] "2012-01-04"
또는 다음을 사용할 수 있습니다. :
> as.Date(as.Date("2011-12-30"):as.Date("2012-01-04"), origin="1970-01-01")
[1] "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03"
[6] "2012-01-04"
특정 요청을 충족시키는 기능은 다음과 같습니다.
itemizeDates <- function(startDate="12-30-11", endDate="1-4-12",
format="%m-%d-%y") {
out <- seq(as.Date(startDate, format=format),
as.Date(endDate, format=format), by="days")
format(out, format)
}
> itemizeDates(startDate="12-30-11", endDate="1-4-12")
[1] "12-30-11" "12-31-11" "01-01-12" "01-02-12" "01-03-12" "01-04-12"
날짜 시간 문제를 해결하기 위해 윤활유 패키지를 사용하는 것을 선호합니다. 알면 더 직관적이고 이해하고 사용하기 쉽습니다.
library(lubridate)
#mdy() in lubridate package means "month-day-year", which is used to convert
#the string to date object
>start_date <- mdy("12-30-11")
>end_date <- mdy("1-4-12")
#calculate how many days in this time interval
>n_days <- interval(start_date,end_date)/days(1)
>start_date + days(0:n_days)
[1]"2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04"
#convert to original format
format(start_date + days(0:n_days), format="%m-%d-%y")
[1] "12-30-11" "12-31-11" "01-01-12" "01-02-12" "01-03-12" "01-04-12"
참조 : 윤활유로 쉽게 만든 날짜 및 시간
참조 URL : https://stackoverflow.com/questions/14450384/create-a-vector-of-all-days-between-two-dates
반응형
'programing tip' 카테고리의 다른 글
ImageMagick을 사용하여 애니메이션 GIF를 자르려면 어떻게합니까? (0) | 2021.01.07 |
---|---|
모든 라디오 버튼을 탭할 수 있습니까? (0) | 2021.01.07 |
Java의 내부 클래스에 열거 형을 만들 수없는 이유는 무엇입니까? (0) | 2021.01.07 |
Node.js 또는 Express.js REST API 문서 생성기 (0) | 2021.01.07 |
"표현식 평가 기의 내부 오류" (0) | 2021.01.07 |