library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.3     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
date<-c("12/1/2023","16/2/2023","21/3/2023","11/4/2023","18/5/2023","19/6/2023","23/7/2023","1/8/2023","22/9/2023","1/10/2023","12/11/2023","14/12/2023")
date<-as.Date(date)
rank<-c("1","2","3","4","5","6","7","8","9","10","11","12")
song<-c("raggea","slow","to","love scene","gotham city","bad","saved me","slogan","rumourse","roses","kalif","bouty")
artists<-c("joseph hill","rihana featuring brandy","pink featuring dre","boucher","seal featuring paul","paul","ludacris featuring hill","ludacris","rihana","pink","brandy","pink")
weeks_po<-c(5,7,9,11,13,15,17,19,22,25,27,29)
billboard<-data.frame(date,artists,rank,song,weeks_po)
billboard

make a new variable called primary_artist

billboard%>%mutate(primary_artist=ifelse(str_detect(artists,'featuring'),str_match(artists,'(.*)\\sfeaturing')[,2],artists))

select artists and primary_artist

billboard%>%mutate(primary_artist=ifelse(str_detect(artists,'featuring'),str_match(artists,'(.*)\\sfeaturing')[,2],artists))%>%select(artists,primary_artist)%>%select(primary_artist)

creat futuring variable

bill<-billboard%>%mutate(featuring_artist=ifelse(str_detect(artists,'featuring'),str_match(artists,'featuring\\s(.*)')[,2],artists))%>%select(song,featuring_artist)
bill
cbind(billboard,bill)