• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

wday() 함수

24.01.06 05:49 작성 조회수 87

1

안녕하세요?

date_01 = ymd("2030년 1월 1일")

wday(date_01)을 출력하면 3이 나오는 이유를 수업에서 넘어가신 것 같습니다ㅠ

그 이후로 week_start = 1은 월요일을 시작점으로 두는 거고, 보통 week_start는 일요일로 처음에 잡혀있다고 하셨으니, 일요일을 1로 생각하면 화요일이 3으로 나오는 것 추측됩니다만 잘 모르겠습니다ㅠ

 

만약 제 추측이 맞다면 더 헷갈리는데, week_start = 1이 월요일이니, week_start = 0은 일요일을 뜻하나요? 그럼 0 , 1, 2해서 화요일은 2가 나와야 하지 않나라는 생각도 들어서요...ㅠ

답변 1

답변을 작성해보세요.

0

안녕하세요 김승욱 입니다.

 

우선 추측하신 내용이 맞습니다. 그리고 week_start = 1 로 설정을 하고 결과를 보시면 2가 나오는 것을 확인하실 수 있습니다.

 

간단하게 답변을 드리자면 wday() 함수의 설계가 해당 값을 내도록 설계가 되어있는 것입니다.

하지만 질문의 의도를 보자면 해당 결과의 값이 3으로 나오는 것이 맞는지 이해하기 어려워 하시는 것 같습니다.

 

보통 이런 요일을 반환하는 함수가 "월", "화", "수" 이런 값이 아니라 1, 2, 3 이렇게 반환되는 경우 어려워 하시는 분들이 많습니다. 이 때는 직접 월요일~일요일 까지의 데이터를 준비하고 해당 값을 요일을 반환하는 함수에 통과시켰을 때 어떤 값이 반환되는지 직접 확인하는 것이 중요합니다.

 

예를 들어 다음과 같이 두 종류의 코드를 실행하고 결과를 보는 것입니다.

wday(ymd("2030년 1월 1일", "2030년 1월 2일", "2030년 1월 3일", "2030년 1월 4일"
         "2030년 1월 5일", "2030년 1월 6일", "2030년 1월 7일"))

wday(ymd("2030년 1월 1일", "2030년 1월 2일", "2030년 1월 3일", "2030년 1월 4일"
         "2030년 1월 5일", "2030년 1월 6일", "2030년 1월 7일"),
     week_start = 1)

 

함수 자체의 공식 문서를 잘 읽고 이해하는 것도 중요하고 해당 문서에 기술된 내용을 보다 완벽하게 이해하기 위해서 이렇게 샘플 코드를 직접 작성하고 그 결과를 확인하는 것이 꼭 필요합니다.

이런 과정이 없으면 직접 작성한 코드와 그에 따른 결과를 신뢰할 수 없게 되고 완전히 잘못된 분석 결과가 나올 수 있습니다.

 

처음에는 느린 영타와 익숙하지 않은 문법으로 테스트 코드를 작성을 소홀히 하는 경우가 많습니다. 개발도 그렇고 분석도 그렇고 이런 unit 테스트는 결과의 신뢰성을 보장하기 위해 꼭 필요한 작업임을 숙지하시기 바랍니다.

 

감사합니다.