as.Date()가 날짜를 처리한다면 strptime() 함수는 시간을 처리한다.

 

> now<-strptime("2018-03-06 17:45:00","%Y-%m-%d %H:%M:%S")
> now
[1] "2018-03-06 17:45:00 KST"
> class(now)
[1] "POSIXlt" "POSIXt" 

strptime() 함수는 날짜처럼 생긴 문자열을 받아서 사람이 지정한 포맷으로 R이 읽게 해서 시간으로 이해하게끔 하는 함수이다. as.Date() 함수는 년월일을 y-m-d 순서로 써 주면 알아서 날짜로 읽어 들이는데 시간은 표시하는데 워낙 다양한 포맷이 있다 보니 사람이 읽는 형식을 지정하게끔 만들어 놨다. 뒤에 보이는 "%Y-%m-%d %H:%M:%S"가 바로 그 앞에 나온 문자열을 읽는 형식이다. 보면 대충 이해가 되겠지만 년(%Y)월(%m)일(%d)이 대시(-)로 연결한 형태이고, 시(%H)분(%M)초(%S)가 콜론(:)으로 연결한 형태이니 그렇게 알고 읽어 들이라는 뜻이다.

 

POSIXlt는 시간을 컴퓨터로 표시하는 표준 포맷인데 시간 정보를 리스트 형식으로 저장하고 있다. 이제 POSIXlt class인 변수 now를 해부해 보자.

 

> now$year
[1] 118
> now$mon
[1] 2
> now$mday
[1] 6
> now$hour
[1] 17
> now$min
[1] 45
> now$sec
[1] 0
> now$wday
[1] 2

좀 특이하다. year=118은 1900년을 0으로 표준화한 값으로, now가 가진 년도에 1900을 뺀 수치이다. mon=2는 1월을 0으로 표준화한 값으로, now가 가진 달에 1을 뺀 수치이다. mday=6은 6일 그대로이고, hour, min, sec도 그대로이며, wday는 일요일을 0으로 1씩 증가시킨 요일 값으로, 화요일이란 뜻이다.

Posted by jujaeuk
,