본문 바로가기

R

[R] lubridate 패키지

패키지 설치

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
Recent Posts
Popular Posts
Recent Comments