열렬히.뛰기

시간 데이터 기초

Language > 프로그래밍 언어 > R > 시간 데이터 기초

날짜와 시간

날짜정보와 시간정보는 R에서 다른 클래스를 통해 구현된다. 날짜(Date)는 1970-01-01을 기준으로 R 내부적으로 정수형으로 저장되고, 시간(Time)도 R 내부적으로 1970-01-01을 기준으로 초단위로 저장된다.

  • 날짜(Date): Date 클래스
  • 시간(time): POSIXctPOSIXlt 클래스
    • POSIXct 클래스 : 시간정보 ⇒ 데이터프레임
    • POSIXlt 클래스 : 시간정보 ⇒ 요일, 년, 월, 일 등의 정보가 담긴 리스트

문자열(“1970-01-01”)을 as.Date 함수를 통해 날짜 객체로 변환한다.

내부적으로 보면 정수 0 으로 저장된다.

기준일 다음 “1970-01-03”일을 보면 숫자 2가 된다.

r
x <- as.Date("1970-01-01")
x

문자열 ⇒ 시간 : 1

as.POSIXlt(x) 를 사용한다.

r
x <- Sys.time()     # 현재 시각(문자열)을 x에
p <- as.POSIXlt(x)  # as.POSIXlt 함수로 리스트화
names(unclass(p))   # 분해하기

그러면 다음과 같이 나온다.

따라서 데이터를 고르는 방법은 다음과 같다.

r
p$year + 1900  # 현재 년도 (1900을 항상 더해줘야 한다)
p$min          # 현재 분
p$mday         # 현재 요일 (1 : 토요일)

문자열 ⇒ 날짜

as.date() 를 사용한다.

r
x = Sys.time() # 현재 시간
as.Date(x)     # 현재 날짜로 바꾸기 : 대문자 조심

문자열 ⇒ 시간 : 2

r
datestring <- c("2006-01-08 10:07:52", "2006-08-07 19:33:02")
x <- strptime(datestring, "%Y-%m-%d %H:%M:%S", tz = "EST5EDT")
x