Skip to content

Commit

Permalink
Merge pull request #9 from inbo/7-new-function-colcompare
Browse files Browse the repository at this point in the history
7 new function colcompare
  • Loading branch information
SanderDevisscher authored Apr 30, 2024
2 parents e200b19 + efcb1f6 commit e855491
Show file tree
Hide file tree
Showing 10 changed files with 173 additions and 0 deletions.
4 changes: 4 additions & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ License: MIT + file LICENSE
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.1
Imports:
dplyr (>= 1.1.4),
magrittr (>= 2.0.3),
rlang (>= 1.1.3)
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Generated by roxygen2: do not edit by hand

importFrom(magrittr,"%>%")
19 changes: 19 additions & 0 deletions R/check.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#' Check
#'
#' @author Sander Devisscher
#'
#' @description
#' Helper script to determine existence in environment panel
#'
#' @param x environment object
#'
#' @details
#' This doesn't work with functions which will yield a 0 by default.
#'
#'
#' @returns
#' 1 = object exists in environment
#' 0 = object doesn't exist in environment


check <- function(x){tryCatch(if(!is.logical(class(x)) && ifelse(is.function(x), stop(), 0)) 1 else 1, error=function(e) 0)}
85 changes: 85 additions & 0 deletions R/colcompare.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#' Columnname comparison
#'
#' @author Sander Devisscher
#'
#' @description
#' A simple function to list the difference in column names in 2 datasets.
#'
#' @param x dataframe 1
#' @param y dataframe 2
#'
#' @return
#' a list of columns present in x but not in y and a list of columns
#' present in y and not in x.
#'
#' @examples
#' \dontrun{
#' # create example dataframes
#' super_sleepers <- data.frame(rating=1:4,
#' animal=c('koala', 'hedgehog', 'sloth', 'panda'),
#' country=c('Australia', 'Italy', 'Peru', 'China'),
#' avg_sleep_hours=c(21, 18, 17, 10))
#'
#' super_actives <- data.frame(rating=1:4,
#' animal=c('kangeroo', 'wolf', 'jaguar', 'tiger'),
#' country=c('Australia', 'Italy', 'Peru', 'China'),
#' avg_active_hours=c(16, 15, 8, 10))
#'
#' colcompare(super_sleepers, super_actives)
#' }
#'
#' @importFrom magrittr %>%

colcompare <- function(x, y){

test_xiny <- subset(colnames(x), !colnames(x) %in% colnames(y))
test_xiny <- as.data.frame(test_xiny) %>%
dplyr::mutate(lower = tolower(test_xiny))
test_yinx <- subset(colnames(y), !colnames(y) %in% colnames(x))
test_yinx <- as.data.frame(test_yinx) %>%
dplyr::mutate(lower = tolower(test_yinx))

combined <- test_xiny %>%
dplyr::full_join(test_yinx, by = "lower")

# Typos (x en y) ####
test_xANDy <- combined %>%
dplyr::filter(!is.na(test_xiny) & !is.na(test_yinx)) %>%
dplyr::mutate(test_xANDy = paste0("X: ", test_xiny, " <==> ", test_yinx, " :Y \n"))
test_xANDy <- test_xANDy$test_xANDy

if(check(test_xANDy) == 1){
if(!rlang::is_empty(test_xANDy)){
error <- paste0("Kolommen met verschillende schrijfwijze: \n",
test_xANDy)
writeLines(error)
print("=====================================================================")
}
}
# Only X ####
test_xiny <- combined %>%
dplyr::filter(is.na(test_yinx))
test_xiny <- test_xiny$test_xiny

if(check(test_xiny)==1){
if(!rlang::is_empty(test_xiny)){
test_xiny <- paste(test_xiny, collapse = ", \n")
error <- paste0("Kolommen uit x die niet in y voorkomen: \n", test_xiny)
writeLines(error)
print("=====================================================================")
}
}

# Only y ####
test_yinx <- combined %>%
dplyr::filter(is.na(test_xiny))
test_yinx <- test_yinx$test_yinx

if(check(test_yinx)==1){
if(!rlang::is_empty(test_yinx)){
test_yinx <- paste(test_yinx, collapse = ", \n")
error <- paste0("Kolommen uit y die niet in x voorkomen: ", test_yinx)
writeLines(error)
}
}
}
Empty file removed R/scafold.txt
Empty file.
Empty file removed data/scafold.txt
Empty file.
24 changes: 24 additions & 0 deletions man/check.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 40 additions & 0 deletions man/colcompare.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file removed man/scafold.txt
Empty file.
Empty file removed src/scafold.txt
Empty file.

0 comments on commit e855491

Please sign in to comment.