☆ 강의 내용 요약 ☆
# Date 관련 함수들
Sys.Date( ) : 오늘의 날짜를 알려주는 함수
as.Date(데이터, 입력한 데이터의 형태 ) : 문자열을 날짜 데이터로 전환해주는 함수 (시간은 무시한다)
class : character -> Date
strptime(데이터, 입력한 데이터의 형태) : 문자열을 날짜, 시간 데이터로 바꿔주는 함수 (시간도 나옴)
class : character -> Date
as.POSIXlt( ) / as.POSIXct( ) : 날짜와 시간을 나타내는 함수
weekdays( ) : 지정한 날짜의 요일을 알려주는 함수
months( ) : 지정한 날짜의 달을 알려주는 함수
quarters( ) : 지정한 날짜의 분기를 알려주는 함수
unclass( ) : 1970년 1월 1일부터 지정한 날짜까지 며칠이 지났는지 계산해주는 함수
Sys.timezone( ) : 컴퓨터의 시간이 어느 지역의 시간인지 알 수 있는 함수
format(데이터, 원하는 데이터 형식) : 데이터를 원하는 형식으로 문자열로 출력해주는 함수
class : ? -> character
cat( ) :print과 format과 같은 문자열을 출력하는 함수이다.
unclass( ) : class를 잠시 해제하고 벡터로 만드는 함수
# Date 관련 명령어
%m : 월이 2자리로 나옴
%b : 월이 1자리로 나옴
%B : "월"이 숫자에 붙어서 나옴
%d : 날짜가 2자리로 나옴
%y / %Y : y가 소문자면 년도가 2자리로 나옴
%a : "월" "화" "수" 요일이 한글자만 나옴
%A : "월요일" "화요일" 요일이 3글자로 나옴
오늘 날짜 가져오기
# 오늘 날짜 가져오기 : Sys.Date()
today = Sys.Date()
today
str(today)
class(today)
Sys.Date() 함수를 이용해서 오늘 날짜를 가져올 수 있다.
데이터 타입은 Date 이다.
날짜 연산하기
t1 <- "2022-08-18"
t1
t1 <- t1 + 1 # 문자열에 연산해서 에러남
today = today + 1
# 내일로 넘어가있음 !
today
그냥 t1 변수에 날짜를 추가했을 경우, character 타입으로 연산이 불가능하다.
하지만 Sys.Date 함수로 날짜를 불러온 경우에는, 1을 더했을 경우 내일로 넘어가진다!
# format 함수 활용하기
** R 언어는 문자열에 숫자를 더할 수 없다.
컴퓨터의 시간은 1970년 1월 1일 00시부터 1씩 카운트 된 것으로, 내부적으로는 그냥 숫자다.
그렇기 때문에 출력 서식 지정이 가능하다.
# format : 문자열을 출력하는 함수. character로 나옴
today = Sys.Date()
# %Y = 년도를 4자리로 표현
s1 <- format(today, "%Y")
s1
class(s1)
format() 함수로 문자열을 출력할 수 있다. 데이터가 character 타입으로 나온다.
%Y : 년도를 4자리로 표현하는 명령어
# %m : 월 2자리 %d :날짜 2자리
format(today, "%Y년 %m월 %d일")
# y가 소문자면 년도가 2자리
format(today, "%y년 %m월 %d일")
# %B = 월자체가 붙어있음
format(today, "%y년 %B %d일")
# %a = 목
format(today, "%y년 %m월 %d일 %a")
# %a = 목요일
format(today, "%y년 %m월 %d일 %A")
format(today, "%Y-%m-%d-%a")
format(today, "%Y-%m-%d-%A")
%m : 월이 2자리로 나옴
%b : 월이 1자리로 나옴
%B : "월"이 숫자에 붙어서 나옴
%d : 날짜가 2자리로 나옴
%y / %Y : y가 소문자면 년도가 2자리로 나옴
%a : "월" "화" "수" 요일이 한글자만 나옴
%A : "월요일" "화요일" 요일이 3글자로 나옴
다양한 날짜 관련 함수
# 요일을 알려줌
weekdays(today)
# 3일뒤에 무슨 요일?
weekdays(today+3)
# 달을 알려줌
months(today)
# 분기를 알려줌
quarters(today)
# 1970년 1월 1일부터 날짜수 센거
unclass(today)
weekdays( ) : 지정한 날짜의 요일을 알려주는 함수
months( ) : 지정한 날짜의 달을 알려주는 함수
quarters( ) : 지정한 날짜의 분기를 알려주는 함수
unclass( ) : 1970년 1월 1일부터 지정한 날짜까지 며칠이 지났는지 계산해주는 함수
as.Date 함수 활용하기
# 문자열을 날짜 형태로 전환하기
# as.Date 시간은 무시함
as.Date("2022/08/18")
as.Date("2022/08/18 17:03:21")
as.Date("2022년 08월 18일", "%Y년 %m월 %d일")
as.Date(데이터, 입력한 데이터의 형태 ) : 문자열을 날짜 데이터로 전환해주는 함수 (시간은 무시한다)
as.Date("1/8/2022", "%d/%b/%Y") # 일 : 2자리 / 달: 1자리 / 년 : 4자리
as.Date("160111", format="%y%m%d") # 년 : 2자리 / 달 : 2자리 / 일 : 2자리
as.Date("110228", format="%y%m%d") # 년 : 2자리 / 달 : 2자리 / 일 : 2자리
as.Date("11228", format="%d%b%y") # 일 : 2자리 / 달 : 1자리 / 년 : 2자리
숫자만 대충써도, format 함수를 같이 이용해 날짜 데이터로 추출할 수 있다.
x1 <-"2022-08-18 17:16:23"
class(x1)
d1 <- as.Date(x1, "%Y-%m-%d %H:%M:%S")
d1 +1
class(d1)
as.Date( ) 함수를 이용해 문자열을 Date 타입으로 바뀐 것을 확인 할 수 있다.
strptime 함수
t <- strptime(x1, "%Y-%m-%d %H:%M:%S")
t
class(t)
strptime(데이터, 입력한 데이터의 형태) : 문자열을 날짜, 시간 데이터로 바꿔주는 함수
POSIXlt와 POSIXct
as.Date(x1)
# 둘다 날짜와 시간까지 나타냄
as.POSIXct(x1)
as.POSIXlt(x1)
POSIXlt 와 POSIXct 타입이란 뭘까?
POSIXlt는 날짜와 시간을 나타내는데, 1900년에서 부터 지나온 날짜와 시간을 리스트 형태로 저장한다.
POSIXct는 1970년 1월 1일을 기준으로 타임존을 저장한다.
( 여기서 타임존은 시간의 기준이 되는 지역을 의미하는 듯 하다. )
결국 결과는 둘이 똑같이 나오는데, 무슨 차이인지 아직도 모르겠다..
POSIXlt 타입 연산하기
t <- strptime(x1, "%Y-%m-%d %H:%M:%S")
#POSIXIt 타입의 경우 1이 sec의 의미이다.
t <- t+1
t
# 한시간 후
t <- t + 3600
t
1 = 1sec으로 계산한다.
# 지금부터 두시간 이후
class(Sys.time())
Sys.time() + 3600*2
x1 <-"2022-08-18 17:16:23"
x2 <-"2022-08-19 02:32:23"
as.Date(x2) - as.Date(x1)
as.POSIXct(x2) - as.POSIXct(x1)
as.POSIXlt(x2) - as.POSIXlt(x1)
시간을 무시하는 as.Date는 두 날짜 사이의 일 수만 나타낸다.
보다 정확한 수치 값을 계산 할때는 POSIX 함수 들을 사용하는게 좋아보인다.
R은 국가를 컴퓨터의 OS에 따라 설정한다.
Sys.timezone()
Sys.timezone( ) : 컴퓨터의 시간이 어느 지역의 시간인지 알 수 있는 함수
lubridate 패키지 활용하기
lubridate는 날짜와 시간 처리를 담당하는 패키지이다.
# 패키지 설치하기
install.packages("lubridate")
library(lubridate)
# 달의 마지막일
lubridate::ceiling_date(as.Date("2022/08/01"), unit="month")-1
**ceiling은 올림의 의미를 가진다. 반대로 내림은 floor가 있다.
8월 1일을 올려서 9월 1일이 된 후, -1하여 9월 1일의 전날을 구함으로 써 8월의 마지막일을 구할 수 있다.
이달의 말일 구하기
lubridate::ceiling_date(Sys.Date(), unit="month")-1
Sys.Date를 활용하여 이달의 말일을 구할 수 있다.
오늘부터 말일까지 며칠이 남았는지 구해보자
today = Sys.Date()
last = lubridate::ceiling_date(Sys.Date(), unit="month")-1
period =last - today
period
Sys.Date와 Ceiling_Date를 이용하면 쉽게 구할 수 있다.
11만 나오게 하기
# 11만 나오게 하기
class(period)
unclass(period) # class 해제하기
period[1]
d<- unclass(period)
d[1] # print가 생략된거임
print(d[1])
cat("말일까지 남은 날짜는", d[1], "입니다")
unclass( ) : class를 잠시 해제하고 벡터로 만드는 함수
cat은 print과 format과 같은 문자열을 출력하는 함수이다.
( d[1]과 print(d[1])은 같은 의미이다. r은 print를 생략할 수 있다. )
말일의 요일 구하기
weekdays(last)
cat(as.character(last), weekdays(last))
weekdays 함수에 last를 넣으면 말일의 요일을 알 수 있다 !
~ 오늘의 공부 후기 ~
실생활에 유용한 날짜와 시간에 관련된 함수들에 대해 배웠다 !
며칠에 무슨 요일인지 알려주는 weekdays 함수가 개인적으로 가장 유용할 것같다.
SPOSIX얘네는 아직도 먼차인지 모르겠다 ..
※ 사용한 교재 : 쉽게 배우는 R 데이터 분석 / 저자 : 김영우
'R > 강의복습' 카테고리의 다른 글
[22.08.22] 10일차 (인터랙티브 그래프 / 시계열 그래프 / 산포도 / 빈도수그래프) (0) | 2022.09.03 |
---|---|
[22.08.19] 9일차 지도시각화 (0) | 2022.08.21 |
[22.08.18] 8일차(wordclou2/정규식/문자열/gsub/grep/substring) (0) | 2022.08.21 |
[22.08.17] 7일차 텍스트마이닝 / 워드클라우드만들기 (0) | 2022.08.21 |
[22.08.16] 6일차 (ggplot, 산포도, 막대그래프, 선그래프, 데이터분석하기, 전처리) (0) | 2022.08.21 |