Как обрабатывать данные, используя пакет Lubridate и Regex вместо использования отдельной функции? - PullRequest
0 голосов
/ 22 апреля 2020

https://www.kaggle.com/shivamb/netflix-shows-and-movies-exploratory-analysis/data ---- содержит набор данных.

Это предварительный анализ данных, выполненный на шоу из набора данных Netflix. В процессе обработки данных есть две основные цели. Сначала нужно получить только часть года отдельно от столбца date_added. Второй - создать новый столбец, который содержит количество сезонов для определенного шоу из столбца продолжительности. Я использовал функцию separate из пакета dplyr для достижения двух вышеуказанных целей.

Код выглядит следующим образом: -

# Neitlix EDA ----
# https://www.kaggle.com/shivamb/netflix-shows-and-movies-exploratory-analysis

library(tidyverse)
library(lubridate)    

net_flix <- read.csv("netflix_titles_nov_2019.csv")

net_flix_wrangled_tbl <- net_flix %>%
    separate(date_added, 
             into = c("date","month","year"),
             sep = "-",
             remove = FALSE)%>%
    separate(duration,
             into = c("count","show_type"),
             sep = " ",
             remove = FALSE)%>%
    glimpse()

Те, кто не может sh загрузить данные, могут использовать следующий код фрейма данных, который содержится ниже:

sf <- data.frame(date_added = c("30-11-19", "29-11-19", "", "12-07-19", "", "16-09-19"), 
duration = c("1 Season", "67 min", "135 min", "2 Seasons", "107 min", "3 Seasons"))

Выход работает с функцией separate() для получения даты и фильтрации количества сезонов из столбца длительности.

Но можно ли сделать это лучше и эффективнее, используя пакет lubridate для получения года и функции ifelse() и filter() или Regex для получения только количества сезонов, а не минуты фильмов?

1 Ответ

1 голос
/ 22 апреля 2020

Вот одна альтернатива:

library(dplyr)
library(lubridate)


sf %>%
  mutate(date_added = dmy(date_added), 
         date = day(date_added), month = month(date_added),
         year = year(date_added), 
         count = readr::parse_number(as.character(duration)),
         show_type = stringr::str_remove(duration, as.character(count)))


#  date_added  duration date month year count show_type
#1 2019-11-30  1 Season   30    11 2019     1    Season
#2 2019-11-29    67 min   29    11 2019    67       min
#3       <NA>   135 min   NA    NA   NA   135       min
#4 2019-07-12 2 Seasons   12     7 2019     2   Seasons
#5       <NA>   107 min   NA    NA   NA   107       min
#6 2019-09-16 3 Seasons   16     9 2019     3   Seasons
...