as.Date(날짜)를 사용하여 날짜를 다룰 수 있다. unclass를 이용하면 1970년 1월 1일부터 지금까지 몇 일이 지났는지 알려준다. 



> date <- as.Date("2016-03-01")

> date

[1] "2016-03-01"

> unclass(date)

[1] 16861

> unclass(as.Date("2016-03-01"))

[1] 16861

> startDate <- as.Date("1970-01-01")

> startDate

[1] "1970-01-01"

> unclass(startDate)

[1] 0

> unclass(startDate + 1)

[1] 1




Date 객체간 서로 빼면 기간이 나온다. 참고로 Date 연산은 오직 음수만 사용할 수 있다.


> date1 <- as.Date("2016-02-28")

> date2 <- as.Date("2016-03-01")

> date2 - date1

Time difference of 2 days

> date1 - date2

Time difference of -2 days

> date2 + date1

Error in `+.Date`(date2, date1) : 

  이항 연산자 + 는 "Date" 객체에 정의되어 있지 않습니다

> date2 * date1

Error in Ops.Date(date2, date1) : "Date" 객체에 정의되지 않은 *입니다

> date2 / date1

Error in Ops.Date(date2, date1) : "Date" 객체에 정의되지 않은 /입니다






현재 시간 정보를 Sys.time()으로 받아 as.POSIXlt() 함수로 시간 객체를 만들 수 있다. format() 함수를 통해서 문자열로 날짜와 시간을 얻을 수 있다. 



> t <- Sys.time()

> t

[1] "2016-02-27 08:27:34 KST"

> class(t)

[1] "POSIXct" "POSIXt" 

> time_data <- as.POSIXlt(t)

> unclass(time_data)

$sec

[1] 34.59137


$min

[1] 27


$hour

[1] 8


$mday

[1] 27


$mon

[1] 1


$year

[1] 116


$wday

[1] 6


$yday

[1] 57


$isdst

[1] 0


$zone

[1] "KST"


$gmtoff

[1] 32400


attr(,"tzone")

[1] ""    "KST" "KDT"

> time_data$mday

[1] 27

> unclass(t)

[1] 1456529255

> format(t, "%Y%H%M")

[1] "20160827"






Posted by 김용환 '김용환'