Programming

zoo :: yearmon 객체에서 월과 연도 추출

procodes 2020. 7. 26. 13:57
반응형

zoo :: yearmon 객체에서 월과 연도 추출


나는 yearmon물건을 가지고있다 :

require(zoo)
date1 <- as.yearmon("Mar 2012", "%b %Y")
class(date1)
# [1] "yearmon"

이것에서 월과 연도를 어떻게 추출 할 수 있습니까?

month1 <- fn(date1)
year1 <- fn(date1)

대신 어떤 기능을 사용해야합니까 fn()


format()class의 객체에 메소드를 사용하십시오 "yearmon". 여기 예제 날짜가 있습니다 (올바르게 작성되었습니다!).

date1 <- as.yearmon("Mar 2012", "%b %Y")

그런 다음 필요에 따라 날짜 부분을 추출 할 수 있습니다.

> format(date1, "%b") ## Month, char, abbreviated
[1] "Mar"
> format(date1, "%Y") ## Year with century
[1] "2012"
> format(date1, "%m") ## numeric month
[1] "03"

이들은 문자로 반환됩니다. 적절한 as.numeric()경우 연도 또는 월을 숫자 변수로 원하는 경우 랩핑 하십시오 (예 :

> as.numeric(format(date1, "%m"))
[1] 3
> as.numeric(format(date1, "%Y"))
[1] 2012

참조 ?yearmon?strftime자세한 내용은 - 후자는 사용할 수있는 자리 문자를 설명합니다.


lubridate 패키지는 이런 종류의 일은 놀랍습니다 :

> require(lubridate)
> month(date1)
[1] 3
> year(date1)
[1] 2012

OP가 zoo여기에서 사용하고 있다는 것을 알고 있지만 ts동일한 문제에 대한 표준 솔루션에 대한 이 스레드 인터넷 검색을 발견했습니다 . 그래서 zoo무료 답변을 추가 할 것이라고 생각했습니다 ts.

# create an example Date 
date_1 <- as.Date("1990-01-01")
# extract year
as.numeric(format(date_1, "%Y"))
# extract month
as.numeric(format(date_1, "%m"))

당신은 사용할 수 있습니다 format:

library(zoo)
x <- as.yearmon(Sys.time())
format(x,"%b")
[1] "Mar"
format(x,"%Y")
[1] "2012"

큰 벡터의 경우 :

y = as.POSIXlt(date1)$year + 1900    # x$year : years since 1900
m = as.POSIXlt(date1)$mon + 1        # x$mon : 0–11

질문에 정확히 어떤 출력이 예상되는지 명시하지 않았지만 월에 대해 월 번호 (1 월 = 1)를 원한다고 가정하고 연도에 대해 숫자 4 자리 연도를 원한다고 가정하면 문제의 코드를 방금 실행했다고 가정합니다.

cycle(date1)
## [1] 3
as.integer(date1)
## [1] 2012

참고 URL : https://stackoverflow.com/questions/9749598/extract-month-and-year-from-a-zooyearmon-object

반응형