답변함

빅데이터분석기사 lubridate 적용했는데 왜 값이 다를까요

김계철 교수님 안녕하세요~

빅데이터분석기사 2023 실기 교재에서요

<교재161페이지>

lubridate 날짜함수 이용 연습해보니 다음과 같이 제1방법과 제2밥법이 서로 값이 달라지네요. 왜 달라지는지 이해가 안됩니다. 답답해서 여쭙습니다.

이미 time_index 변수는 날짜로 인식하게 설정이 되어 있다면 제1방법처럼 ymd_hms~~~를 안써도 값이 같아야 하지 않을까요?

rm(list=ls())도 모두 적용했어요.

그런데 237페이지도 같은 방법으로 해보면 이때는 두 방법 모두 값이 같아요.

급하게 여쭤보니 꼭 알려주시기 바랍니다. 매번 답변해 주셔서 감사합니다~

# 1방법

> lakers %>% filter(time_index<="2008-10-28 12:00:00") %>%

+ head(3)

# A tibble: 3 × 12

time_index opponent game_type period etype team

<dttm> <chr> <chr> <int><chr> <chr>

1 2008-10-28 03:00:00 POR home 1 rebound LAL

2 2008-10-28 02:52:00 POR home 1 turnover LAL

3 2008-10-28 02:52:00 POR home 1 timeout LAL

# ℹ 6 more variables: player <chr>, result <chr>,

# points <int>, type <chr>, x <int>, y <int>

 

# 2방법

> lakers %>% filter(time_index<=ymd_hms("2008-10-28 12:00:00")) %>%

+ head(3)

# A tibble: 3 × 12

time_index opponent game_type period etype team

<dttm> <chr> <chr> <int><chr> <chr>

1 2008-10-28 12:00:00 POR home 1 jump ball OFF

2 2008-10-28 11:39:00 POR home 1 shot LAL

3 2008-10-28 11:37:00 POR home 1 rebound LAL

# ℹ 6 more variables: player <chr>, result <chr>,

# points <int>, type <chr>, x <int>, y <int>

 

#####################################################################

 

<교재237페이지>

 

# 1방법

df %>% filter(country=="United Kingdom") %>%

+ mutate(ymd=dmy(date_added)) %>%select(ymd) %>%

+ filter(ymd>='2018-01-01'&ymd<='2018-01-30')

ymd

1 2018-01-30

2 2018-01-18

3 2018-01-01

4 2018-01-15

5 2018-01-01

Warning message:

There was 1 warning in `mutate()`.

ℹ In argument: `ymd = dmy(date_added)`.

Caused by warning:

! 15 failed to parse.

 

# 2방법

 

> df %>% filter(country=="United Kingdom") %>%

+ mutate(ymd=dmy(date_added)) %>%select(ymd) %>%

+ filter(ymd>=ymd('2018-01-01')&ymd<=ymd('2018-01-30'))

ymd

1 2018-01-30

2 2018-01-18

3 2018-01-01

4 2018-01-15

5 2018-01-01

Warning message:

There was 1 warning in `mutate()`.

ℹ In argument: `ymd = dmy(date_added)`.

Caused by warning:

! 15 failed to parse.

0

댓글

댓글 1개
날짜 투표수
  • 안녕하세요 답변 드립니다.

    두번째 질문사항 같은 것이 정답입니다.

    첫번째 질문사항 중에 아래 코딩을 보시면 date=ymd_hm, format 년도와 시간분이고 초단위 모두 00 

    설정이 되어 있습니다. 

    ymd_hms( )함수로 필터링 하지 않으면 조건에 해당되는 범위 시계열 데이터를 가져올수 없습니다.

    lakers<-lakers %>% 
      mutate(date=paste(date,time) %>% ymd_hm) %>% 
      rename(time_index=date) %>% 
      select(-time) 

    아래 내용 확인해주세요

    > lakers %>% filter(time_index<="2008-10-28 12:00:00") %>% dim
    [1] 114  12
    > lakers %>% filter(time_index<=ymd_hms("2008-10-28 12:00:00")) %>% dim
    [1] 416  12

     

    0

댓글을 남기려면 로그인하세요.

 

원하는 것을 찾지 못하셨나요?

질문하기