Here is one method.
DF <- data.frame(INFO = c('Arrivals 21/22',
'Mbwana Samatta',
'€6.00m',
'Allahyar Sayyadmanesh',
'€1.00m',
'Departures 21/22',
'Deniz Türüc',
'€0.00m',
'Arrivals 20/21',
'Irfan Can Kahveci',
'€7.00m',
'Marcel Tisserand',
'€4.00m'))
library(stringr)
library(tidyr)
library(dplyr)
DF <- DF %>% mutate(Category = case_when(
str_detect(INFO, "Arrivals|Departures") ~ "Type",
str_detect(INFO, "€") ~ "Value",
TRUE ~ "Name"
))
DF$Type <- NA
DF$Name <- NA
for (i in 1:nrow(DF)) {
if(DF[i, "Category"] == "Type") StoredType <- DF[i, "INFO"]
if(DF[i, "Category"] == "Name") StoredName <- DF[i, "INFO"]
if(DF[i, "Category"] == "Value") {
DF[i, "Type"] <- StoredType
DF[i, "Name"] <- StoredName
}
}
DF <- DF %>% filter(Category == "Value")
DF <- DF %>% separate(Type, into = c("Type", "Season"), sep = " ")
DF <- DF %>% select(Name, Season, Type, Value = INFO)
DF
Name Season Type Value
1 Mbwana Samatta 21/22 Arrivals €6.00m
2 Allahyar Sayyadmanesh 21/22 Arrivals €1.00m
3 Deniz Türüc 21/22 Departures €0.00m
4 Irfan Can Kahveci 20/21 Arrivals €7.00m
5 Marcel Tisserand 20/21 Arrivals €4.00m