R 에서 시간 문자열을 시간 형식으로 변경하기
RFM 작업을 하면서 문자열로 된 날짜를 날짜 형식으로 변경하는 방법을 하다가 찾은 내용입니다. 기본적으로는 다음의 방법으로 날짜를 변경했습니다.
cust_data$date <- as.POSIXct(as.character(cust_data$date),
format="%Y%m%d") # 시간형으로 변환
이 방법으로 하면 원 데이터가 20180923
형태의 데이터를 날짜형인 POSIXct 로 변경을 해 줍니다. 그 다음에 년, 월, 일을 따로 저장하려면 다음과 같은 개별 작업을 또다시 수행합니다.
## 연변수 추가
cust_data$year <- format(cust_data$date, '%Y')
#
## 월변수 추가
cust_data$month <- format(cust_data$date, '%m')
#
## 일변수 추가
cust_data$day <- format(cust_data$date, '%d')
비효율적이라 다른 방법이 있는지 찾아보니 lubridate라는 패키지가 있었습니다. 아래와 같이 한번에 날짜 형식을 인식 할 수도 있고 년, 월, 일을 나눠서 처리할 수 있었습니다.
요일은 기본으로 한글인 “일”, “월”,.. 형식으로 저장되는데 로케일을 변경해 주면 “Sun”, “Mon”,…형식으로 저장 할 수 있습니다.
# 영어로 로케일 설정
# Sys.setlocale("LC_TIME", "English_United States.1252") # Windows
Sys.setlocale("LC_TIME", "en_US.UTF-8") # Mac
# 날짜를 한번에 년월일 나누기 # https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html
# cust_data$data 20180929
cust_data = cust_data %>%
dplyr::mutate(date = lubridate::ymd(date)) %>%
dplyr::mutate(year = lubridate::year(date),
month = lubridate::month(date),
day = lubridate::day(date),
weekday = lubridate::wday(date, label = TRUE))
glimpse(cust_data)
# 한국어로 재설정
# Sys.setlocale("LC_TIME", "Korean_Korea.949") # Windows
Sys.setlocale("LC_TIME", "ko_KR.UTF-8") # Mac