如何使用 Lubridate 包和 Regex 而不是使用单独的函数来处理数据?
How to wrangle the data using Lubridate package and Regex instead of using the separate function?
https://www.kaggle.com/shivamb/netflix-shows-and-movies-exploratory-analysis/data----包含数据集。
这是对 Netflix 数据集中的节目进行的探索性数据分析。数据整理过程有两个主要目标。首先是仅从 date_added 列中单独获取年份部分。其次是创建一个新列,其中包含持续时间列中特定节目的季数。我依靠 dplyr
包中的 separate
函数来实现上述两个目标。
代码如下:-
# 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()
不想下载数据的可以使用下面包含的数据框的代码:
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
函数以更好更稳健的方式完成此操作吗?只获取季节数而不是电影分钟数?
这是另一种选择:
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
https://www.kaggle.com/shivamb/netflix-shows-and-movies-exploratory-analysis/data----包含数据集。
这是对 Netflix 数据集中的节目进行的探索性数据分析。数据整理过程有两个主要目标。首先是仅从 date_added 列中单独获取年份部分。其次是创建一个新列,其中包含持续时间列中特定节目的季数。我依靠 dplyr
包中的 separate
函数来实现上述两个目标。
代码如下:-
# 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()
不想下载数据的可以使用下面包含的数据框的代码:
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
函数以更好更稳健的方式完成此操作吗?只获取季节数而不是电影分钟数?
这是另一种选择:
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