R/pulizia.R

Defines functions filter_df1_columns ordina_per_nome ordine_alfabetico_colonna ripulisci_df ripulisci_insegna_presso ripulisci_nomi correct_nome ripulisci_prima_pubblicazione ripulisci_editori correct_editori correct_characters ripulisci_nomi_darte ripulisci_nomi_colonne

Documented in ripulisci_df

#' @export
ripulisci_nomi_colonne <- function(
  df
) {
  colnames(df)[colnames(df) == "AttivitÃ."] <- "Attività"
  df
}

#' @export
ripulisci_nomi_darte <- function(
  df
) {
  if ("Numero" %in% colnames(df)) {
    df$Numero <- NULL
  }
  nomi <- df["Nome"][[1]]
  if (!"Nome d'arte" %in% colnames(df)) {
    df["Nome d'arte"] <- rep(NA, nrow(df))
  }
  df <- dplyr::select(.data = df, "Nome d'arte", dplyr::everything())

  trattino_mask <- grepl(pattern = " - ", x = nomi)

  if (sum(trattino_mask) > 0) {
    temp <- matrix(
      unlist(stringr::str_split(nomi[trattino_mask], pattern = " - ")),
      ncol = 2,
      byrow = TRUE
    )
    colnames(temp) <- c("Nome d'arte", "Nome")
    temp2 <- df[trattino_mask, c("Nome d'arte", "Nome")]
    temp2[, "Nome"] <- temp[, "Nome"]
    for (i in 1:nrow(temp2)) {
      if (is.na(temp2[i, "Nome d'arte"])) {
        temp2[i, "Nome d'arte"] <- temp[i, "Nome d'arte"]
      }
    }
    temp2[, "Nome"] <- gsub(x = temp2[, "Nome"], pattern = " \".*\"", replacement = "")
    df[trattino_mask, c("Nome d'arte", "Nome")] <- temp2
  }

  df
}

#' @export
correct_characters <- function(xyz) {
  xyz <- gsub(x = xyz, pattern = "ê", replacement = "ê")
  xyz <- gsub(x = xyz, pattern = "É", replacement = "É")
  xyz <- gsub(x = xyz, pattern = "é", replacement = "é")
  xyz <- gsub(x = xyz, pattern = "ù", replacement = "ù")
  xyz <- gsub(x = xyz, pattern = "Ã", replacement = "à")
  xyz <- gsub(x = xyz, pattern = "àˆ", replacement = "É")
  xyz <- gsub(x = xyz, pattern = "’", replacement = "'")
  xyz <- gsub(x = xyz, pattern = "àƒÂ²", replacement = "ò")
  xyz <- gsub(x = xyz, pattern = "à¡", replacement = "á")
  xyz <- gsub(x = xyz, pattern = "à§", replacement = "ç")
  xyz <- gsub(x = xyz, pattern = "à²", replacement = "ò")
  xyz <- gsub(x = xyz, pattern = "à¨", replacement = "è")
  xyz <- gsub(x = xyz, pattern = "à¬", replacement = "ì")
  xyz <- gsub(x = xyz, pattern = "íe", replacement = "íe")
  xyz <- gsub(x = xyz, pattern = "é", replacement = "é")
  xyz <- gsub(x = xyz, pattern = "“", replacement = "\"")
  xyz <- gsub(x = xyz, pattern = "â€\u009d", replacement = "\"")
  xyz <- gsub(x = xyz, pattern = "é", replacement = "é")
  xyz <- gsub(x = xyz, pattern = "Ã", replacement = "à")
  xyz <- gsub(x = xyz, pattern = "’", replacement = "\'")

  xyz <- stringr::str_squish(xyz)

  xyz
}

#' @export
correct_editori <- function(editore) {
  if (length(editore) == 0) {
    return(editore)
  }

  editore <- dbmefu::correct_characters(editore)

  if (editore == "Action Lab" | editore == "action lab" | editore == "Action lab") {
    return("Action Lab Entertainment")
  }
  if (editore == "Ankama" | editore == "Ankama Editions" | editore == "ankama" | editore == "ankama editions") {
    return("Ankama Éditions")
  }
  if (editore == "Aftershock Comics" | editore == "Aftershock" | editore == "AfterShock") {
    return("AfterShock Comics")
  }
  if (editore == "ADD Editore" | editore == "ADD editore") {
    return("Add Editore")
  }
  if (editore == "Beccogiallo") {
    return("BeccoGiallo")
  }
  if (editore == "BAO Publishing" | editore == "BAO publishing" | editore == "bao publishing") {
    return("Bao Publishing")
  }
  if (editore == "Bamboo" | editore == "Bamboo Editions") {
    return("Bamboo Éditions")
  }
  if (editore == "Boom! Studios" | editore == "Boom!Studios" | editore == "BOOM!Studios") {
    return("BOOM! Studios")
  }
  if (editore == "Canicola" | editore == "Canicola edizioni" | editore == "canicola" | editore == "canicola edizioni") {
    return("Canicola Edizioni")
  }
  if (grepl(pattern = "Caurette", x = editore)) {
    return("Éditions Caurette")
  }
  if (grepl(pattern = "caurette", x = editore)) {
    return("Éditions Caurette")
  }
  if (editore == "Clair de Lune" | editore == "clair de lune" | editore == "Clair de lune" | editore == "Editions Clair de Lune") {
    return("Éditions Clair de Lune")
  }
  if (editore == "Coconino" || editore == "coconino") {
    return("Coconino Press")
  }
  if (editore == "Comicon edizioni" | editore == "comicon edizioni" | editore == "Comicon Edizioni") {
    return("COMICON Edizioni")
  }
  if (editore == "Comicout" | editore == "comicout") {
    return("ComicOut")
  }
  if (editore == "Cut Up Publishiung" | editore == "cut up publishing") {
    return("Cut Up Publishing")
  }
  if (editore == "Danilo Zanetti" | editore == "Danilo zanetti" | editore == "Zanetti") {
    return("Edizioni Zanetti")
  }
  if (editore == "Dentiblù" | editore == "Dentiblu" | editore == "dentiblù" | editore == "dentiblu") {
    return("Dentiblù")
  }
  if (editore == "Dc Comics" | editore == "DC comics" | editore == "Dc comics") {
    return("DC Comics")
  }
  if (editore == "Dark Horse" | editore == "dark horse" | editore == "Dark Horse Comcis") {
    return("Dark Horse Comics")
  }
  if (grepl(pattern = "Delcourt", x = editore)) {
    return("Éditions Delcourt")
  }
  if (grepl(pattern = "delcourt", x = editore)) {
    return("Éditions Delcourt")
  }
  if (grepl(pattern = "Diabolo", x = editore)) {
    return("Diabolo Edizioni")
  }
  if (grepl(pattern = "diabolo", x = editore)) {
    return("Diabolo Edizioni")
  }
  if (grepl(pattern = "disney", x = editore)) {
    return("The Walt Disney Company")
  }
  if (grepl(pattern = "Disney", x = editore)) {
    return("The Walt Disney Company")
  }
  if (editore == "Dupuis" | editore == "Editions Dupuis" | editore == "editions dupuis" | editore == "dupuis") {
    return("Éditions Dupuis")
  }
  if (grepl(pattern = "Dynamite", x = editore)) {
    return("Dynamite Entertainment")
  }
  if (grepl(pattern = "dynamite", x = editore)) {
    return("Dynamite Entertainment")
  }
  if (editore == "Edizioni Inkiostro" | editore == "edizioni inkiostro" | editore == "edizioni INKiostro") {
    return("Edizioni INKiostro")
  }
  if (editore == "Editions du long bec" | editore == "Editions du Long Bec" | editore == "du long bec" | editore == "Du Long Bec") {
    return("Éditions du Long Bec")
  }
  if (editore == "Editions Jungle") {
    return("Éditions Jungle")
  }
  if (editore == "Gallimard" | editore == "Editions Gallimard") {
    return("Éditions Gallimard")
  }
  if (editore == "ef edizioni" | editore == "EF Edizioni" | editore == "Ef Edizioni"| editore == "EF" | editore == "ef") {
    return("EF edizioni")
  }
  if (grepl(pattern = "Eris", x = editore)) {
    return("Eris Edizioni")
  }
  if (grepl(pattern = "eris", x = editore)) {
    return("Eris Edizioni")
  }
  if (grepl(pattern = "Feltrinelli", x = editore)) {
    return("Feltrinelli Editore")
  }
  if (grepl(pattern = "feltrinelli", x = editore)) {
    return("Feltrinelli Editore")
  }
  if (editore == "Fumetti di cane" | editore == "fumetti di cane") {
    return("Fumetti di Cane")
  }
  if (grepl(pattern = "Glenat", x = editore)) {
    return("Éditions Glenat")
  }
  if (grepl(pattern = "glenat", x = editore)) {
    return("Éditions Glenat")
  }
  if (grepl(pattern = "Il Castoro", x = editore)) {
    return("Editrice Il Castoro")
  }
  if (editore == "IT Comics" | editore == "it comics" | editore == "it Comics") {
    return("It Comics")
  }
  if (editore == "IDW" | editore == "Idw Publishing") {
    return("IDW Publishing")
  }
  if (editore == "Image") {
    return("Image Comics")
  }
  if (editore == "J-Pop Manga") {
    return("J-Pop")
  }
  if (editore == "Kappalab") {
    return("KappaLab")
  }
  if (editore == "Lavieri" | editore == "lavieri" | editore == "lavieri edizioni") {
    return("Lavieri Edizioni")
  }
  if (editore == "Logos" | editore == "logos") {
    return("Logos Edizioni")
  }
  if (grepl(pattern = "Magic Press", x = editore)) {
    return("Magic Press Edizioni")
  }
  if (grepl(pattern = "Lombard", x = editore)) {
    return("Éditions le Lombard")
  }
  if (grepl(pattern = "lombard", x = editore)) {
    return("Éditions le Lombard")
  }
  if (editore == "Maledizioni" | editore == "MaleEdizioni") {
    return("MalEdizioni")
  }
  if (editore == "Nobrow" | editore == "nobrow") {
    return("Nobrow Press")
  }
  if (editore == "Noise Pres") {
    return("Noise Press")
  }
  if (grepl(pattern = "NPE", x = editore)) {
    return("Edizioni NPE")
  }
  if (editore == "Oblomov" | editore == "oblomov") {
    return("Oblomov Edizioni")
  }
  if (grepl(pattern = "Panini", x = editore)) {
    return("Panini Comics")
  }
  if (grepl(pattern = "panini", x = editore)) {
    return("Panini Comics")
  }
  if (grepl(pattern = "Paquet", x = editore)) {
    return("Éditions Paquet")
  }
  if (grepl(pattern = "paquet", x = editore)) {
    return("Éditions Paquet")
  }
  if (editore == "Proglo") {
    return("ProGlo")
  }
  if (editore == "renbooks" | editore == "Renbooks") {
    return("RenBooks")
  }
  if (grepl(pattern = "Remer", x = editore)) {
    return("Remer Comics")
  }
  if (grepl(pattern = "remer", x = editore)) {
    return("Remer Comics")
  }
  if (grepl(pattern = "Rizzoli", x = editore)) {
    return("Rizzoli Lizard")
  }
  if (editore == "Rue de Sevres" | editore == "rue de sevres") {
    return("Rue de Sévres")
  }
  if (grepl(pattern = "RW", x = editore)) {
    return("RW Edizioni")
  }
  if (editore == "Saldapress" | editore == "saldapress" | editore == "SaldaPress") {
    return("SaldaPress")
  }
  if (editore == "Sbam Comics" | editore == "sbam comics" | editore == "Sbam!Comics" | editore == "SBAM! Comics") {
    return("Sbam! Comics")
  }
  if (editore == "Scout Comics" | editore == "scout comics" | editore == "scout publishing" | editore == "Scout Publishing") {
    return("Scout Comics")
  }
  if (editore == "Sergio Bonelli" | editore == "SBE" | editore == "sergio bonelli" | editore == "Bonelli" | editore == "bonelli") {
    return("Sergio Bonelli Editore")
  }
  if (editore == "Sinnos Editrice" | editore == "sinnos editrice" | editore == "sinnos") {
    return("Sinnos")
  }
  if (grepl(pattern = "Soleil", x = editore)) {
    return("Éditions Soleil")
  }
  if (grepl(pattern = "soleil", x = editore)) {
    return("Éditions Soleil")
  }
  if (editore == "Solferino" | editore == "solferino") {
    return("Solferino Libri")
  }
  if (grepl(pattern = "Valiant", x = editore)) {
    return("Valiant Entertainment")
  }
  if (grepl(pattern = "valiant", x = editore)) {
    return("Valiant Entertainment")
  }

  return(editore)
}

#' @export
ripulisci_editori <- function(df) {
  for (i in 1:nrow(df)) {
    editorivec <- df["Editori"][i, ]
    editori <- stringr::str_split(editorivec, pattern = ", ")[[1]]
    df["Editori"][i, ] <- paste(
      sort(unlist(
        lapply(X = editori, FUN = function(x) dbmefu::correct_editori(x))
      )),
      collapse = ", "
    )
  }
  df
}

#' @export
ripulisci_prima_pubblicazione <- function(df) {
  for (i in 1:nrow(df)) {
    all <- df["Paesi di prima pubblicazione"][i, ]
    vec <- stringr::str_split(all, pattern = ", ")[[1]]
    vec[vec == "Us" | vec == "US"] <- "USA"
    vec <- sort(unique(vec))
    df["Paesi di prima pubblicazione"][i, ] <- paste(vec, collapse = ", ")
  }
  df
}

#' @export
correct_nome <- function(nome) {
  nome <- dbmefu::correct_characters(nome)
  nome2 <- gsub(pattern = " $", replacement = "", x = nome)
  nome3 <- gsub(pattern = "^ ", replacement = "", x = nome2)
  nome4 <- gsub(pattern = " , ", replacement = ", ", x = nome3)
  nome4
}

#' @export
ripulisci_nomi <- function(df) {
  for (i in 1:nrow(df)) {
    nome <- df["Nome"][i, ]
    nome <- dbmefu::correct_nome(nome)
    df["Nome"][i, ] <- nome
  }
  df <- df[order(df$Nome), ]
  rownames(df) <- 1:nrow(df)
  df
}

#' @export
ripulisci_insegna_presso <- function(df) {
  for (i in 1:nrow(df)) {
    scuola <- df["Insegna presso"][i, ]
    scuola <- dbmefu::correct_characters(scuola)
    df["Insegna presso"][i, ] <- scuola
  }
  df
}

#' @title Clean the dataframe so you can work with it
#' @description Clean the dataframe so you can work with it
#' @inheritParams default_params_doc
#' @return a clean dataframe
#' @export
ripulisci_df <- function(df) {

  df <- data.frame(df, check.names = FALSE)
  df <- dbmefu::ripulisci_nomi_colonne(df)
  colonne <- colnames(df)
  if ("Nome" %in% colonne) {
    df <- dbmefu::ripulisci_nomi(df)
  }
  df <- dbmefu::ripulisci_nomi_darte(df)
  if ("Editori" %in% colonne) {
    df <- dbmefu::ripulisci_editori(df)
  }
  if ("Attività" %in% colonne) {
    df <- dbmefu::ordine_alfabetico_colonna(df, colonna = "Attività", maiusc = T)
  }
  if ("Insegna presso" %in% colonne) {
    df <- dbmefu::ripulisci_insegna_presso(df)
  }
  if ("Paesi di prima pubblicazione" %in% colonne) {
    df <- dbmefu::ripulisci_prima_pubblicazione(df)
  }

  vars <- colnames(df)[!colnames(df) %in% c("Nome d'arte", "Nome", "Sesso")]
  df <- dbmefu::ordina_per_nome(df)
  for (var in vars) {
    if (var %in% c("Editori", "Insegna presso")) {
      maiusc <- FALSE
    } else {
      maiusc <- TRUE
    }
    df <- dbmefu::ordine_alfabetico_colonna(
      df = df,
      colonna = var,
      maiusc = maiusc
    )
  }

  df
}

#' @export
ordine_alfabetico_colonna <- function(df, colonna, maiusc = FALSE) {
  if (!colonna %in% colnames(df)) {
    stop("Questa colonna non esiste!")
  }
  if (!maiusc %in% c(TRUE, FALSE) ) {
    stop("'maiusc' must be boolean")
  }
  for (i in 1:nrow(df)) {
    linea_i_vec <- df[colonna][i, ]
    x <- stringr::str_split(linea_i_vec, pattern = ", ")[[1]]
    if (maiusc == FALSE) {
      temp <- paste(sort(x), collapse = ", ")
      df[colonna][i, ] <- dbmefu::correct_nome(temp)
    }
    if (maiusc == TRUE) {
      temp <- paste(sort(stringr::str_to_title(x)), collapse = ", ")
      df[colonna][i, ] <- dbmefu::correct_nome(temp)
    }
  }

  df
}

#' @export
ordina_per_nome <- function(df) {
  df <- df[order(df$Nome), ]
  rownames(df) <- 1:nrow(df)
  df
}

#' @export
filter_df1_columns <- function(
  df1,
  df2
) {
  colnomi1 <- colnames(df1)
  colnomi2 <- colnames(df2)
  df2 <- df2[, colnomi2 %in% colnomi1]
  df2
}
Giappo/dbmefu documentation built on Dec. 17, 2021, 9:32 p.m.