diff --git a/.github/workflows/check-full.yaml b/.github/workflows/check-full.yaml index 5254645..5437519 100644 --- a/.github/workflows/check-full.yaml +++ b/.github/workflows/check-full.yaml @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/.github/workflows/website.yaml b/.github/workflows/website.yaml index 71479ac..227df4b 100644 --- a/.github/workflows/website.yaml +++ b/.github/workflows/website.yaml @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/NEWS.md b/NEWS.md index 6800b3a..5bfe1d5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +# cleaner 1.5.5 + +* For `clean_factor()` switched the names and values of `levels` +* Fix CRAN check error + + # cleaner 1.5.4 * For `clean_Date()` and `clean_POSIXct()`: allow argument `max_date` to be the same length as `x` diff --git a/R/clean.R b/R/clean.R index 3bc3a9b..b712324 100644 --- a/R/clean.R +++ b/R/clean.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # @@ -26,7 +26,7 @@ #' @param false [regex] to interpret values as `FALSE` (which defaults to [regex_false()]), see Details #' @param na [regex] to force interpret values as `NA`, i.e. not as `TRUE` or `FALSE` #' @param remove [regex] to define the character(s) that should be removed, see Details -#' @param levels new factor levels, may be named with regular expressions to match existing values, see Details +#' @param levels new factor levels, may be named regular expressions to match existing values, see Details #' @param droplevels logical to indicate whether non-existing factor levels should be dropped #' @param ordered logical to indicate whether the factor levels should be ordered #' @param fixed logical to indicate whether regular expressions should be turned off @@ -39,7 +39,7 @@ #' @param format character string giving a date-time format as used by [strptime()]. #' #' For `clean_Date(..., guess_each = TRUE)`, this can be a vector of values to be used for guessing, see Examples. -#' @param ... for `clean_Date` and `clean_POSIXct`: other parameters passed on these functions +#' @param ... for `clean_Date` and `clean_POSIXct`: other arguments passed on these functions #' @inheritParams base::as.POSIXct #' @details #' Using `clean()` on a vector will guess a cleaning function based on the potential number of `NA`s it returns. Using `clean()` on a data frame to apply this guessed cleaning over all columns. @@ -47,25 +47,25 @@ #' Info about the different functions: #' #' - **`clean_logical()`**: -#' Use parameters `true` and `false` to match values using case-insensitive regular expressions ([regex]). Unmatched values are considered `NA`. By default, values are matched with [`regex_true`](#regex_true) and [`regex_false`](#regex_false). This allows support for values "Yes" and "No" in various languages. Use parameter `na` to override values as `NA` that would otherwise be matched with `true` or `false`. See Examples. +#' Use arguments `true` and `false` to match values using case-insensitive regular expressions ([regex]). Unmatched values are considered `NA`. By default, values are matched with [regex_true()] and [regex_false()]. This allows support for values "Yes" and "No" in various languages. Use argument `na` to override values as `NA` that would otherwise be matched with `true` or `false`. See Examples. #' #' - **`clean_factor()`**: -#' Use parameter `levels` to set new factor levels. They can be case-insensitive regular expressions to match existing values of `x`. For matching, new values for `levels` are internally temporarily sorted descending on text length. See Examples. +#' Use argument `levels` to set new factor levels. They can be named case-insensitive regular expressions to match existing values of `x`. For matching, new values for `levels` are internally temporarily sorted descending on text length. See Examples. #' #' - **`clean_numeric()`, `clean_double()`, `clean_integer()` and `clean_character()`**: -#' Use parameter `remove` to match values that must be removed from the input, using regular expressions ([regex]). In the case of `clean_numeric()`, commas will be read as dots and only the last dot will be kept. Function `clean_character()` will keep middle spaces by default. See Examples. +#' Use argument `remove` to match values that must be removed from the input, using regular expressions ([regex]). In the case of `clean_numeric()`, commas will be read as dots and only the last dot will be kept. Function `clean_character()` will keep middle spaces by default. See Examples. #' #' - **`clean_percentage()`**: -#' This new class works like `clean_numeric()`, but transforms it with [`as.percentage`](#as.percentage), which will retain the original values but will print them as percentages. See Examples. +#' This new class works like `clean_numeric()`, but transforms it with [as.percentage()], which will retain the original values but will print them as percentages. See Examples. #' #' - **`clean_currency()`**: -#' This new class works like `clean_numeric()`, but transforms it with [`as.currency`](#as.currency). The currency symbol is guessed based on the most traded currencies by value (see Source): the United States dollar, Euro, Japanese yen, Pound sterling, Swiss franc, Renminbi, Swedish krona, Mexican peso, South Korean won, Turkish lira, Russian ruble, Indian rupee, and the South African rand. See Examples. +#' This new class works like `clean_numeric()`, but transforms it with [as.currency()]. The currency symbol is guessed based on the most traded currencies by value (see Source): the United States dollar, Euro, Japanese yen, Pound sterling, Swiss franc, Renminbi, Swedish krona, Mexican peso, South Korean won, Turkish lira, Russian ruble, Indian rupee, and the South African rand. See Examples. #' #' - **`clean_Date()`**: -#' Use parameter `format` to define a date format or leave it empty to have the format guessed. Use `"Excel"` to read values as Microsoft Excel dates. The `format` parameter will be evaluated with [`format_datetime`](#format_datetime), meaning that a format like `"d-mmm-yy"` will be translated internally to `"%e-%b-%y"` for convenience. See Examples. +#' Use argument `format` to define a date format or leave it empty to have the format guessed. Use `"Excel"` to read values as Microsoft Excel dates. The `format` argument will be evaluated with [format_datetime()], meaning that a format like `"d-mmm-yy"` will be translated internally to `"%e-%b-%y"` for convenience. See Examples. #' #' - **`clean_POSIXct()`**: -#' Use parameter `remove` to match values that must be removed from the input, using regular expressions ([regex]). The resulting string will be coerced to a date/time element with class `POSIXct`, using [`as.POSIXct()`](https://stat.ethz.ch/R-manual/R-devel/library/base/html/as.POSIXct.html). See Examples. +#' Use argument `remove` to match values that must be removed from the input, using regular expressions ([regex]). The resulting string will be coerced to a date/time element with class `POSIXct`, using [as.POSIXct()]. See Examples. #' #' The use of invalid regular expressions in any of the above functions will not return an error (as in base R) but will instead interpret the expression as a fixed value and will throw a warning. #' @rdname clean @@ -92,6 +92,7 @@ #' clean_factor(gender_age, c("M", "F")) #' clean_factor(gender_age, c("Male", "Female")) #' clean_factor(gender_age, c("0-50", "50+"), ordered = TRUE) +#' clean_factor(gender_age, levels = c("Group A" = "female", "Group B" = "male 50+", Other = ".*")) #' #' clean_Date("13jul18", "ddmmmyy") #' clean_Date("12 August 2010") @@ -195,6 +196,9 @@ clean_logical <- function(x, true = regex_true(), false = regex_false(), na = NU #' @rdname clean #' @export clean_factor <- function(x, levels = unique(x), ordered = FALSE, droplevels = FALSE, fixed = FALSE, ignore.case = TRUE) { + if (!is.null(names(levels))) { + levels <- stats::setNames(names(levels), levels) + } if (!all(levels %in% x)) { new_x <- rep(NA_character_, length(x)) # sort descending on character length diff --git a/R/currency.R b/R/currency.R index 6577bbd..376a319 100644 --- a/R/currency.R +++ b/R/currency.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/data.R b/R/data.R index 47a579e..077b567 100644 --- a/R/data.R +++ b/R/data.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/format_datetime.R b/R/format_datetime.R index 1ae65e7..42c3097 100644 --- a/R/format_datetime.R +++ b/R/format_datetime.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/format_names.R b/R/format_names.R index 08bb1d3..27d7126 100644 --- a/R/format_names.R +++ b/R/format_names.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/format_p_value.R b/R/format_p_value.R index fa5ed50..8e01445 100644 --- a/R/format_p_value.R +++ b/R/format_p_value.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/freq.R b/R/freq.R index 52545f4..d7781da 100755 --- a/R/freq.R +++ b/R/freq.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/helpers.R b/R/helpers.R index ce32805..2c5b785 100644 --- a/R/helpers.R +++ b/R/helpers.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/na_replace.R b/R/na_replace.R index 6e133ce..e5ef439 100644 --- a/R/na_replace.R +++ b/R/na_replace.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/percentage.R b/R/percentage.R index 48d9ea1..6b98a5d 100644 --- a/R/percentage.R +++ b/R/percentage.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/rdate.R b/R/rdate.R index 7dd7609..3792954 100644 --- a/R/rdate.R +++ b/R/rdate.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/regex_true_false.R b/R/regex_true_false.R index 94c8623..374ea13 100644 --- a/R/regex_true_false.R +++ b/R/regex_true_false.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/R/zzz.R b/R/zzz.R index bc1e1ec..e9eb3d3 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/README.md b/README.md index e80ef7e..20afaf0 100644 --- a/README.md +++ b/README.md @@ -99,9 +99,9 @@ Use `clean()` to clean data. It guesses what kind of data class would best fit y You can also name your levels to let them match your values. They support regular expressions too: ```r - clean_factor(gender_age, levels = c("female" = "Group A", - "male 50+" = "Group B", - ".*" = "Other")) + clean_factor(gender_age, levels = c("Group A" = "female", + "Group B" = "male 50+", + Other = ".*")) #> [1] Other Group B Group A Group A #> Levels: Group A Group B Other ``` diff --git a/_pkgdown.yml b/_pkgdown.yml index 5be6b1e..3990df2 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/data_raw/unclean.R b/data_raw/unclean.R index c721d7c..bf424db 100644 --- a/data_raw/unclean.R +++ b/data_raw/unclean.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/man/clean.Rd b/man/clean.Rd index ac490a3..fcd531a 100644 --- a/man/clean.Rd +++ b/man/clean.Rd @@ -82,7 +82,7 @@ clean_POSIXct( \item{ignore.case}{logical to indicate whether matching should be case-insensitive} -\item{levels}{new factor levels, may be named with regular expressions to match existing values, see Details} +\item{levels}{new factor levels, may be named regular expressions to match existing values, see Details} \item{ordered}{logical to indicate whether the factor levels should be ordered} @@ -102,7 +102,7 @@ For \code{clean_Date(..., guess_each = TRUE)}, this can be a vector of values to \item{max_date}{date (coercible with \code{\link[=as.Date]{as.Date()}}) to indicate the maximum allowed of \code{x}, which defaults to today. This is to prevent that \code{clean_Date("23-03-47")} will return 23 March 2047 and instead returns 23 March 1947 with a warning.} -\item{...}{for \code{clean_Date} and \code{clean_POSIXct}: other parameters passed on these functions} +\item{...}{for \code{clean_Date} and \code{clean_POSIXct}: other arguments passed on these functions} \item{tz}{a character string. The time zone specification to be used for the conversion, \emph{if one is required}. System-specific (see @@ -133,19 +133,19 @@ Using \code{clean()} on a vector will guess a cleaning function based on the pot Info about the different functions: \itemize{ \item \strong{\code{clean_logical()}}: -Use parameters \code{true} and \code{false} to match values using case-insensitive regular expressions (\link{regex}). Unmatched values are considered \code{NA}. By default, values are matched with \href{#regex_true}{\code{regex_true}} and \href{#regex_false}{\code{regex_false}}. This allows support for values "Yes" and "No" in various languages. Use parameter \code{na} to override values as \code{NA} that would otherwise be matched with \code{true} or \code{false}. See Examples. +Use arguments \code{true} and \code{false} to match values using case-insensitive regular expressions (\link{regex}). Unmatched values are considered \code{NA}. By default, values are matched with \code{\link[=regex_true]{regex_true()}} and \code{\link[=regex_false]{regex_false()}}. This allows support for values "Yes" and "No" in various languages. Use argument \code{na} to override values as \code{NA} that would otherwise be matched with \code{true} or \code{false}. See Examples. \item \strong{\code{clean_factor()}}: -Use parameter \code{levels} to set new factor levels. They can be case-insensitive regular expressions to match existing values of \code{x}. For matching, new values for \code{levels} are internally temporarily sorted descending on text length. See Examples. +Use argument \code{levels} to set new factor levels. They can be named case-insensitive regular expressions to match existing values of \code{x}. For matching, new values for \code{levels} are internally temporarily sorted descending on text length. See Examples. \item \strong{\code{clean_numeric()}, \code{clean_double()}, \code{clean_integer()} and \code{clean_character()}}: -Use parameter \code{remove} to match values that must be removed from the input, using regular expressions (\link{regex}). In the case of \code{clean_numeric()}, commas will be read as dots and only the last dot will be kept. Function \code{clean_character()} will keep middle spaces by default. See Examples. +Use argument \code{remove} to match values that must be removed from the input, using regular expressions (\link{regex}). In the case of \code{clean_numeric()}, commas will be read as dots and only the last dot will be kept. Function \code{clean_character()} will keep middle spaces by default. See Examples. \item \strong{\code{clean_percentage()}}: -This new class works like \code{clean_numeric()}, but transforms it with \href{#as.percentage}{\code{as.percentage}}, which will retain the original values but will print them as percentages. See Examples. +This new class works like \code{clean_numeric()}, but transforms it with \code{\link[=as.percentage]{as.percentage()}}, which will retain the original values but will print them as percentages. See Examples. \item \strong{\code{clean_currency()}}: -This new class works like \code{clean_numeric()}, but transforms it with \href{#as.currency}{\code{as.currency}}. The currency symbol is guessed based on the most traded currencies by value (see Source): the United States dollar, Euro, Japanese yen, Pound sterling, Swiss franc, Renminbi, Swedish krona, Mexican peso, South Korean won, Turkish lira, Russian ruble, Indian rupee, and the South African rand. See Examples. +This new class works like \code{clean_numeric()}, but transforms it with \code{\link[=as.currency]{as.currency()}}. The currency symbol is guessed based on the most traded currencies by value (see Source): the United States dollar, Euro, Japanese yen, Pound sterling, Swiss franc, Renminbi, Swedish krona, Mexican peso, South Korean won, Turkish lira, Russian ruble, Indian rupee, and the South African rand. See Examples. \item \strong{\code{clean_Date()}}: -Use parameter \code{format} to define a date format or leave it empty to have the format guessed. Use \code{"Excel"} to read values as Microsoft Excel dates. The \code{format} parameter will be evaluated with \href{#format_datetime}{\code{format_datetime}}, meaning that a format like \code{"d-mmm-yy"} will be translated internally to \code{"\%e-\%b-\%y"} for convenience. See Examples. +Use argument \code{format} to define a date format or leave it empty to have the format guessed. Use \code{"Excel"} to read values as Microsoft Excel dates. The \code{format} argument will be evaluated with \code{\link[=format_datetime]{format_datetime()}}, meaning that a format like \code{"d-mmm-yy"} will be translated internally to \code{"\%e-\%b-\%y"} for convenience. See Examples. \item \strong{\code{clean_POSIXct()}}: -Use parameter \code{remove} to match values that must be removed from the input, using regular expressions (\link{regex}). The resulting string will be coerced to a date/time element with class \code{POSIXct}, using \href{https://stat.ethz.ch/R-manual/R-devel/library/base/html/as.POSIXct.html}{\code{as.POSIXct()}}. See Examples. +Use argument \code{remove} to match values that must be removed from the input, using regular expressions (\link{regex}). The resulting string will be coerced to a date/time element with class \code{POSIXct}, using \code{\link[=as.POSIXct]{as.POSIXct()}}. See Examples. } The use of invalid regular expressions in any of the above functions will not return an error (as in base R) but will instead interpret the expression as a fixed value and will throw a warning. @@ -161,6 +161,7 @@ gender_age <- c("male 0-50", "male 50+", "female 0-50", "female 50+") clean_factor(gender_age, c("M", "F")) clean_factor(gender_age, c("Male", "Female")) clean_factor(gender_age, c("0-50", "50+"), ordered = TRUE) +clean_factor(gender_age, levels = c("Group A" = "female", "Group B" = "male 50+", Other = ".*")) clean_Date("13jul18", "ddmmmyy") clean_Date("12 August 2010") diff --git a/pkgdown/extra.css b/pkgdown/extra.css index b40e4d6..ecbf105 100644 --- a/pkgdown/extra.css +++ b/pkgdown/extra.css @@ -7,7 +7,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/tests/testthat.R b/tests/testthat.R index 5a2a42a..e6bf9a4 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/tests/testthat/test-clean.R b/tests/testthat/test-clean.R index 0ef0c39..2bb2848 100644 --- a/tests/testthat/test-clean.R +++ b/tests/testthat/test-clean.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/tests/testthat/test-currency.R b/tests/testthat/test-currency.R index b146c05..8cd0eb2 100644 --- a/tests/testthat/test-currency.R +++ b/tests/testthat/test-currency.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/tests/testthat/test-freq.R b/tests/testthat/test-freq.R index 89ae0ed..6916e1c 100755 --- a/tests/testthat/test-freq.R +++ b/tests/testthat/test-freq.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/tests/testthat/test-percentage.R b/tests/testthat/test-percentage.R index 8963fc9..7a91f29 100644 --- a/tests/testthat/test-percentage.R +++ b/tests/testthat/test-percentage.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the # diff --git a/tests/testthat/test-rdate.R b/tests/testthat/test-rdate.R index 90d662e..7901c0c 100644 --- a/tests/testthat/test-rdate.R +++ b/tests/testthat/test-rdate.R @@ -6,7 +6,7 @@ # https://github.com/msberends/cleaner # # # # LICENCE # -# (c) 2022 Berends MS (m.s.berends@umcg.nl) # +# 2019-2024 Berends MS (m.s.berends@umcg.nl) # # # # This R package is free software; you can freely use and distribute # # it for both personal and commercial purposes under the terms of the #