R을 처음 배울 때 데이트 작업은 내가 다루는 가장 힘들고 시간이 많이 걸리는 작업 중 하나였습니다. 배우는 것이 너무 많습니다! 나는 무엇을 함께해야합니까 as.POSIXct()as.POSIXlt()strftime()strptime()format(),와 as.Date()? R 날짜 형식은 혼란 스러웠고 내가 뭘했는지 상관없이 항상 문제를 겪고있었습니다.

그리고 나는 정직하게 일할 것입니다, R에서의 날짜와 함께 일하는 것은 여전히 ​​저를 때때로 여행시킵니다. 혼란 스러울 수 있습니다. 그러나 나는 날짜 조작 작업을 쉽게 안내 할 수있는 절차를 따르는 법을 배웠다.

오늘 나는 당신이 동일한 절차를 배울 수 있도록 도와 줄 것이므로 R 날짜 형식 문제에 대해 다시 걱정할 필요가 없을 것입니다!

대부분의 R 날짜 형식 연습의 목표

R 날짜 형식으로 작업 할 때 일반적으로 다음과 같은 두 가지 목표 중 하나를 달성하려고합니다.

  1. ” Jan 30 1989” 와 같은 문자열 을 날짜 유형으로 변환 중
  2. 그래프 또는 다른 출력을 위해 특정 형식으로 인쇄 할 R Date 객체 가져 오기

동일한 분석에서이 두 가지 목표를 모두 처리해야 할 수도 있지만 두 가지 별도의 연습으로 생각하는 것이 가장 좋습니다. 성취하려는 목표를 아는 것은 중요합니다. 왜냐하면 각각의 목표를 달성하기 위해 서로 다른 기능을 사용해야하기 때문입니다. 한 번에 하나씩 다루겠습니다.

문자열을 날짜로 변환

일반적인 시나리오는 열 중 하나에 날짜가 들어있는 .csv 파일을 읽은 것입니다. 종종이 열은 character벡터 로 읽혀 집니다.

이 열을 사용할 필요가 없다면 문제가되지 않을 수도 있습니다.

그러나, 종종, 당신은 그것으로 일을해야 할 것입니다! 그래프를 날짜별로 정렬하거나 두 날짜 사이의 일 수를 계산하거나 특정 방식으로 날짜의 서식을 지정하고자 할 것입니다.

이러한 작업을 수행하려면 먼저 character벡터를 벡터 로 변환해야합니다 Date.

R 날짜 작업을위한 3 개 주요 개체 유형이있다 : DatePOSIXct,와 POSIXltDate개체는 날짜 만 사용 POSIXct하고 POSIXlt개체는 날짜와 시간을 모두 사용할 수 있습니다.

전환을 수행하기 전에 먼저 시간 데이터 (사용 가능한 경우)를 유지할지 또는 날짜 만 사용할지 결정해야합니다.

날짜 만 가지고 작업하는 경우, as.Date()유형의 객체를 생성 하는 함수가 필요할 것이다 Date.

날짜와 시간을 모두 원한다면 as.POSIXct()유형의 객체를 생성 하는 함수가 필요할 것이다 POSIXct.

다행히도,이 기능들은 서로 매우 유사하게 작동한다는 것을 알게 될 것이므로, 그들 사이의 특이성을 암기하는 것에 대해 걱정할 필요가 없습니다!

사이드 노트 :이 글에서는이 글 의 범위를 벗어나는 구현상의 차이점과 POSIXlt매우 유사한 유형 을 무시할 것 POSIXct입니다.

as.Date () R 함수를 사용하여 문자열을 날짜로 변환

character문자열에서 Date( 시간 정보 없이) 변환하는 주요 기능 은 as.Date()함수입니다. as.Date()날짜 벡터 및 형식 지정을 허용합니다. 형식 스펙은 제공하는. 자 열에 어떤 날짜 정보가 들어 있는지 식별합니다. 예제를 살펴 보겠습니다.

우리의 입력 문자열은 월 / 일 / 년 형식이었고 %m/%d/%Y,이 문자 스트링을 날짜로 변환하기 위해, 이것에 대응하는 R 형식 스펙을 사용했습니다 .

as.POSIXct()R 함수를 사용하여 문자열을 POSIXct datetime으로 변환

A로부터 변환하기위한 주요 기능 character(A)에 문자열 POSIXct(DateTime 개체  시간 정보) 인 as.POSIXct()함수. 그냥 같은 as.Date()as.POSIXCT()날짜 벡터와 날짜 및 시간 정보는 당신이 제공하는 문자열에 포함되어있는 것을 식별하는 형식 사양을 받아들입니다. 다음은 그 예입니다.

여기에 우리가 23:40:00이전에 처리 한 동일한 날짜 위에 시간 문자열이 추가되었습니다 . 앞에서 %m/%d/%Y %H:%M:%S와 마찬가지로이 문자열에 대한 R 형식 사양을 사용하여 datetime POSIXct객체 로 변환했습니다 .

불필요한 시간 데이터 삭제

이러한 형식 사양이 몇 분 안에 작동하는지 자세히 알아볼 것이지만 우선 먼저 빠르게 살펴 보겠습니다. 때로는 날짜에 시간 정보가 포함되지만 분석을 위해 실제로는 필요하지 않습니다. 때로는 주위를 지키기 위해 짜증이 날 수 있으며, 방금 제거하면 더 깨끗합니다. 다행히도, 이것은 아주 쉽습니다. as.POSIXct()함수 를 사용하는 대신 함수를 사용하고 as.Date()다음과 같이 후행 타임 스탬프 정보를 무시할 수 있습니다 .

이렇게하면 문자열을 Date객체 로 변환하여 데이터 세트에서 불필요한 시간 데이터를 삭제합니다. 기억하십시오 : 시간 데이터가 필요하다면 사용하십시오 as.POSIXct(), 그렇지 않으면 사용하십시오 as.Date()!

R 날짜 형식 사양에 대한 추가 정보

위의 예제를 통해 올바른 형식 지정이 주어진 경우 예제를 검토 as.Date()하고 as.POSIXct()문자열을 날짜로 변환 할 수 있습니다 . 이제 다양한 형식 사양이 무엇인지 검토하고, 다른 형식으로 지정된 문자열을 날짜로 변환하는 방법을 살펴 보겠습니다.

우리는 이미 간략 기호를 보았다 %m%d%Y%H%M, 그리고 %S, 당신은 아마이 월, 일, 년,시, 분, 초에 해당하는 몇 가지 아이디어가 있습니다. 가장 일반적으로 사용되는 R 날짜 형식 사양 목록을 소개하고자합니다.

참고 :이 표는 가장 일반적으로 사용되는 R 날짜 형식을 포함하지만 전부는 아닙니다.  전체 목록을 보려면 R 콘솔에서? strptime을 실행하십시오.
이 표를 살펴보면서 이전에 작업 한 다른 날짜 형식을 확인하십시오. 의 차이에 특별한주의를 지불 %b%B그리고 %m뿐만 아니라, %y와 %Y!

문자열을 날짜 또는 datetime 객체로 변환하는 표준 절차

  1. 지도를 작성해야하는 주요 변수를 확인하십시오.
    • 일반적으로 날짜의 월, 일 및 연도
    • 시간에 대한 시간, 분, 초 추가
  2. 각 키 변수에 대해 적절한 매핑을 식별하십시오.
  3. 형식 지정 캐릭터 라인을 구축합니다.
  4. 구조물 as.Date()또는 as.POSIXct()함수 호출을

몇 가지 예를 통해 작업 해 봅시다!

형식의 문자열이 있다고 가정 해보십시오 Jan 30th, 1989 23:40.

  1. 우리가 매핑해야하는 변수는 월, 일, 년, 시간, 분입니다.
  2. 적절한 매핑을 찾아 보겠습니다.
    • 이 문자열은 다음과 같이 매핑되는 약식 달을 사용합니다. %b
    • 일일지도로 이동 %d
    • 4 자리 연도가 다음으로 매핑됩니다. %Y
    • 24 시간제 시간지도 %H
    • 분당지도 %M
  3. 형식 지정 문자열은 입력 문자열과 정확히 일치해야하며 위의 매핑에서 간단히 대체하십시오. 이 경우 : Jan 30th, 1989 23:40이됩니다%b %dth, %Y %H:%M
  4. 우리는 여기에 날짜와 시간을 모두 다루기 때문에 as.POSIXct()시간 데이터를 유지하기 원한다면 우리 가 필요하다는 것을 알게 됩니다. 이것을 시도 해보자.

굉장해! 필요한 데이터를 정확하게 처리했습니다. 출력을 위해 날짜 형식을 지정하기 전에 한 번 더 연습 해 보도록하겠습니다.

이 경우 문자열이 있다고 가정합니다 30 January 1989 11:40 PM.

  1. 우리가 매핑해야하는 변수는 일, 월, 년,시, 분, 오전 / 오후입니다.
  2. 다시 적절한 매핑을 찾습니다.
    • 일일지도로 이동 %d
    • 이 문자열은 전체 달을 사용하며 %B
    • 4 자리 연도가 다음으로 매핑됩니다. %Y
    • 12 시간제 시간지도는 %I
    • 분당지도 %M
    • 오전 / 오후 표시기가 다음으로 매핑됩니다. %p
  3. 대체, 30 January 1989 11:40 PM된다.%d %B %Y %I:%M %p
  4. 다시 말하면, 우리는 날짜와 시간을 모두 다루기 때문에 우리는 시간 데이터를 유지하기 위해 포스 ct 펙을 사용해야합니다.

우리는 그것을 가지고있다! 이제 주어진 문자열을 가져 와서 해당 문자열의 형식을 결정한 다음 as.Date()R 함수 (날짜 만의 경우) 또는 as.POSIXct()R 함수 (날짜 및 시간의 경우 ) 를 사용하여 해당 문자열 을 변환해야합니다 문자열을 날짜 또는 날짜 시간 표현으로 변환합니다.

이제 우리의 두 번째 과제 인 출력을 위해 R 날짜 또는 datetime 객체의 형식을 지정하고 게시 준비가 완료되도록 정리합니다. 다행히도, 방금 배운 것에 대한 접근 방식에는 많은 유사점이 있음을 알게 될 것입니다.

출판 준비 출력 날짜 형식 지정

이 경우, 당신은 이미 여러 R 날짜 형식 중 하나 (저장되는 R 개체가 DatePOSIXct나 POSIXlt), 그리고 지금 당신은 그래프 또는 게시를 위해 날짜를 정리하고 싶습니다. 나는 그래프를 만들 때 이러한 유형의 변환을 가장 자주 수행하지만 이는 RMarkdown 보고서 및 기타 출력을 생성하는 데 유용합니다.

이전에 R as.POSIXct()및 as.Date()R 함수를 사용하여 문자를 날짜로 변환 하는 동안 R 함수를 사용하여 format()날짜를 문자로 변환합니다!

이전과 마찬가지로 매핑에 중요한 정보를 결정하고 적절한 형식 사양을 선택한 다음 함수 호출을 작성해야합니다. 운 좋게도,이 프로세스는 이전에했던 것과 매우 유사합니다. 단지 역순으로 작업합니다! 위에서 같은 테이블을 사용하여 날짜를 특정 형식으로 매핑하는 데 필요한 변수를 찾을 수 있습니다. 아래 예제를 검토하여 날짜 또는 datetime 변수를 다른 문자 형식으로 변환하여 출력하는 방법을 확인하십시오!

우리는 그것을 가지고있다! R에서 필요한 거의 모든 날짜 연산을 쉽게 수행 할 수 있어야 합니다. R as.POSIXct()및 as.Date()R 함수를 사용하여 문자열을 가져 와서 날짜로 변환 할 수 있습니다. 또한 날짜 또는 datetime 객체를 가져와이 format()함수를 사용하여 게시 준비 그래프 및 문서를 정리할 수 있습니다.

 

참조: 궁극적 인 기본 R 날짜 형식 함수에 대한 가이드