패키지 설치
install.packages("lubridate")
library(lubridate)
lubridate
: 날짜 -> 수치형으로 추출
날짜 -> 문자형으로 추출
format(Sys.Date(),'%Y')
class(format(Sys.Date(),'%Y'))
1. 연도 추출
lubridate::year()
lubridate::year(Sys.Date())
class(lubridate::year(Sys.Date()))
lubridate::year(lubridate::today())
lubridate::year(lubridate::now())
2. 월 추출
lubridate::month()
format(Sys.Date(),'%m') : 문자형 월
lubridate::month(Sys.Date()) : 숫자형 월
lubridate::month(lubridate::today()) : 숫자형 월
lubridate::month(lubridate::now()) : 숫자형 월
3. 일 추출
lubridate::day()
format(Sys.Date(),'%d') : 문자형 일
lubridate::day(Sys.Date()) : 숫자형 일
lubridate::day(lubridate::today()) : 숫자형 일
lubridate::day(lubridate::now()) : 숫자형 일
4. 요일 추출
lubridate::wday()
format(Sys.Date(),'%a') : 문자형 요일
format(Sys.Date(),'%A') : 문자형 요일
weekdays(Sys.Date()) : 문자형 요일
format(Sys.Date(),'%u') : 문자형 숫자요일 1~7 월1
format(Sys.Date(),'%w') : 문자형 숫자요일 0~6 일0
lubridate::wday(Sys.Date(),week_start = 1) : 월요일기준, 숫자형 숫자요일
lubridate::wday(Sys.Date(),week_start = 7) : 일요일기준(기본값)
lubridate::wday(Sys.Date(),week_start = 1,label = T) : label=T factor형 문자요일
lubridate::wday(Sys.Date(),week_start = 1,label = F) : label=F(기본값) 숫자형 숫자요일as.vector(lubridate::wday(Sys.Date(),week_start = 7,label = T)) : vector형 문자요일
lubridate::wday(Sys.Date(),week_start = 7,label = T) : label=t factor형 문자요일
lubridate::wday(Sys.Date(),week_start = 7,label = F) : label=F 기본값, 숫자형 숫자요일
5. 년도의 수를 더하거나 빼는 함수
lubridate::years()
Sys.Date() + lubridate::years(10)
Sys.Date() + lubridate::years(-10)
lubridate::now() + lubridate::years(-10)
lubridate::now() - lubridate::years(10)
6. 월의 수를 더하거나 빼는 함수
base::months()
Sys.Date() + base::months(5)
Sys.Date() + base::months(-5)
Sys.Date() + lubridate::years(10) + base::months(2)
⇒ SQL ) select sysdate+ to_yminterval('10-02') from dual;
7. 일수를 더하거나 빼는 함수
lubridate::days()
Sys.Date() + 100
Sys.Date() + lubridate::days(100)
8. 시간을 더하거나 빼는 함수
lubridate::hours()
Sys.time() + lubridate::hours(2)
Sys.time() + lubridate::hours(-8)
9. 분을 더하거나 빼는 함수
lubridate::minutes()
Sys.time() + lubridate::minutes(30)
Sys.time() + lubridate::minutes(-30)
10. 초를 더하거나 빼는 함수
lubridate::seconds()
Sys.time() + lubridate::seconds(3600)
Sys.time() + lubridate::hours(2) + lubridate::minutes(30) + lubridate::seconds(50)
⇒ Sys.time() + lubridate::hms('02:30:50')
Sys.time() + lubridate::days(100) + lubridate::hours(10) + lubridate::minutes(30) + lubridate::seconds(50)
⇒ SQL ) select localtimestamp + to_dsinterval('100 10:30:50') from dual;
11. 분기를 추출하는 함수
lubridate::quarter()
lubridate::quarter(lubridate::now()+days(200))
lubridate::quarter(Sys.Date()+200)
#분기를 추출하는 함수
base::quarters() -> Q1
날짜시간 수정
x <- lubridate::now()
lubridate::year(x) <- 2000
lubridate::month(x) <- 2
lubridate::day(x) <- 1
lubridate::hour(x) <- 12
lubridate::minute(x) <- 0
lubridate::second(x) <- 0
⇒ 2000-02-01 12:00:00
x+100 x + days(100)
⇒lubridate::now() + 100 : 수행X
⇒lubridate::now() + lubridate::days(100)
[문제55] 아래 화면과 같이 날짜, 시간 정보를 출력해주세요.
“2022년 1월 12일 09시 36분 55초”
format(Sys.Date(),'%Y년 %B %d일 %H시 %M분 %S초')
[문제56] 홀수달에 입사한 사원들 중에 짝수일에 입사한 사원들의 정보를 출력해주세요.
①
x <- as.Date(employees$HIRE_DATE,format='%Y-%m-%d')
②
employees[lubridate::month(x) %% 2 !=0 & lubridate::day(x) %% 2==0,]
[문제57] 2005년도 짝수달에 입사한 사원들 중에 월요일에 입사한 정보를 출력해주세요.
①
x <- as.Date(employees$HIRE_DATE,format='%Y-%m-%d')
②
employees[lubridate::year(x) %in% 2005 & lubridate::month(x) %% 2 ==0 &
lubridate::wday(x,week_start = 1) == 1,]
[문제58] 1분기에 입사한 사원들 중에 수요일에 입사한 사원들의 정보를 출력해주세요.
①
x <- as.Date(employees$HIRE_DATE,format='%Y-%m-%d')
②
employees[lubridate::quarter(x) == 1 & lubridate::wday(x,week_start = 1) == 3,]
'R' 카테고리의 다른 글
[R] 그룹함수 (0) | 2022.01.13 |
---|---|
[R] 중복제거, 정렬 (0) | 2022.01.13 |
[R] 숫자함수, 날짜함수 (0) | 2022.01.13 |
[R] 문자함수 (0) | 2022.01.12 |
[R] read.csv, 조건문, paste (0) | 2022.01.12 |