datefixR
🗓 Standardize messy date data into consistent, machine-readable, formats
Science Score: 77.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
1 of 13 committers (7.7%) from academic institutions -
â—‹Institutional organization owner
-
â—‹JOSS paper metadata
-
â—‹Scientific vocabulary similarity
Low similarity (14.6%) to scientific vocabulary
Keywords
dates
r
r-package
rstats
wrangling
Keywords from Contributors
sequences
optim
geocoding
interactive
annotation
clade
embedded
agents
book
gaming
Last synced: 6 months ago
·
JSON representation
·
Repository
🗓 Standardize messy date data into consistent, machine-readable, formats
Basic Info
- Host: GitHub
- Owner: ropensci
- License: gpl-3.0
- Language: Rust
- Default Branch: main
- Homepage: https://docs.ropensci.org/datefixR/
- Size: 13.5 MB
Statistics
- Stars: 33
- Watchers: 3
- Forks: 4
- Open Issues: 5
- Releases: 16
Topics
dates
r
r-package
rstats
wrangling
Created over 4 years ago
· Last pushed 6 months ago
Metadata Files
Readme
Changelog
Contributing
License
Citation
Codemeta
README.Rmd
---
output:
github_document:
html_preview: false
editor_options:
markdown:
wrap: 80
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
# datefixR
| Usage | Release | Development | Translation Status |
|---------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|
|  | [](https://cran.r-project.org/package=datefixR) |  |[](https://gitlocalize.com/repo/8364/de?utm_source=badge) |
| [](https://opensource.org/license/gpl-3-0) | [](https://ropensci.r-universe.dev/datefixR) | [](https://github.com/ropensci/datefixR/actions) | [](https://gitlocalize.com/repo/8364/es?utm_source=badge) |
| [](https://r-pkg.org/pkg/datefixR) | [](https://doi.org/10.5281/zenodo.5655311) | [](https://www.repostatus.org/#active) | [](https://gitlocalize.com/repo/8364/fr?utm_source=badge)|
|  | [](https://github.com/ropensci/software-review/issues/533) | [](https://app.codecov.io/gh/ropensci/datefixR) |[](https://gitlocalize.com/repo/8364/id?utm_source=badge) |
| | | [](https://style.tidyverse.org) | [](https://gitlocalize.com/repo/8364/ru?utm_source=badge) |
**`datefixR` is an R package that automatically standardizes messy date data into consistent, machine-readable formats.**
Whether you're dealing with free-text web form entries like "02 05 92",
"2020-may-01", or "le 3 mars 2013", `datefixR` intelligently parses diverse date
formats and converts them to R's standard Date class. Under the hood, `datefixR`
uses Rust for fast and memory-safe parsing.
**Key features:**
- **Smart parsing**: Handles mixed date formats, separators, and representations
in a single dataset.
- **Multilingual support**: Recognizes dates in English, French, German,
Spanish, Indonesian, and Russian.
- **Missing data imputation**: User-controlled behavior for incomplete dates
(missing days/months).
- **Error reporting**: If a date cannot be parsed, the user is informed of the
provided date and associated row ID, allowing for easier debugging and
correction.
- **Excel compatibility**: Supports both R and Excel numeric date
representations.
- **Shiny integration**: Interactive web app for data exploration and cleaning.
## Quick Start
Here's a simple example showing how `datefixR` cleans messy date data:
```{R}
library(datefixR)
# Create some messy date data
messy_dates <- c("02/05/92", "2020-may-01", "le 3 mars 2013", "1996")
messy_df <- data.frame(id = 1:4, dates = messy_dates)
print(messy_df)
# Clean the dates
clean_dates <- fix_date_char(messy_dates) # Clean a character vector
clean_df <- fix_date_df(messy_df, "dates") # Clean a column of a dataframe
print(clean_df)
```
The package automatically standardizes dates in different formats (named
months, various separators, incomplete dates) into R's standard `yyyy-mm-dd`
format. When dates are partially missing (like the day or month), they can be
imputed. Whilst imputation defaults to July 1st for incomplete dates,
this behaviour can be changed including the prevention of any imputation.
## Installation
### Stable Release (Recommended)
`datefixR` is available on CRAN:
```{R Cran, eval = FALSE}
install.packages("datefixR")
```
### Latest Stable (r-universe)
For the most up-to-date stable version via
[r-universe](https://r-universe.dev/search):
```{R dev, eval = FALSE}
# Enable universe(s) by ropensci
options(repos = c(
ropensci = "https://ropensci.r-universe.dev",
CRAN = "https://cloud.r-project.org"
))
install.packages("datefixR")
```
## Getting Started
## Package vignette
`datefixR` has a "Getting Started" vignette which describes how to use this
package in more detail than this page. View the vignette by either calling
```{R, eval = FALSE}
browseVignettes("datefixR")
```
or visiting the vignette on the [package
website](https://docs.ropensci.org/datefixR/articles/datefixR.html)
Additional vignettes are available describing `datefixR`'s localization features
and how to use the Shiny app.
## Usage
`datefixR` provides flexible date standardization capabilities across different
data structures and formats. This section demonstrates various use cases with
practical examples.
### Character Vector Cleaning
The most basic use case involves cleaning a character vector of messy dates
using `fix_date_char()`:
```{r char-vector-example}
library(datefixR)
# Mixed format dates
messy_dates <- c(
"02/05/92", # US format, 2-digit year
"2020-may-01", # ISO with named month
"le 3 mars 2013", # French format
"1996", # Year only
"22.07.1977", # European format
"jan 2020" # Month-year only
)
# Clean all dates at once
clean_dates <- fix_date_char(messy_dates)
print(clean_dates)
```
This function automatically handles various separators ("-", "/", ".", spaces),
different date orders, named months in multiple languages, and incomplete dates.
### Data Frame Cleaning
For structured data, use `fix_date_df()` to clean multiple date columns
simultaneously:
```{r df-example}
# Load example dataset
data("exampledates")
knitr::kable(exampledates)
# Fix multiple columns
fixed_df <- fix_date_df(exampledates, c("some.dates", "some.more.dates"))
knitr::kable(fixed_df)
```
The function preserves non-date columns and provides detailed error reporting if
any dates fail to parse.
### Excel Serial Numbers
`datefixR` supports both R and Excel numeric date representations:
```{r excel-serial-example}
# R serial dates (days since 1970-01-01)
r_serial <- "19539" # Represents 2023-07-01
fix_date_char(r_serial)
# Excel serial dates (days since 1900-01-01, accounting for Excel's leap year bug)
excel_serial <- "45108" # Also represents 2023-07-01
fix_date_char(excel_serial, excel = TRUE)
# Mixed serial and text dates
mixed_dates <- c("45108", "2023-07-01", "july 1 2023")
fix_date_char(mixed_dates, excel = TRUE)
```
This is particularly useful when importing data from Excel spreadsheets where
dates may have been converted to serial numbers.
### MDY vs DMY Detection
By default, `datefixR` assumes day-first (DMY) over month-first format when the
date order is ambiguous. However, you can specify month-first (MDY) format:
```{r mdy-dmy-example}
# Ambiguous dates that could be interpreted as either MDY or DMY
ambiguous_dates <- c("01/02/2023", "03/04/2023", "05/06/2023")
# Default: Day-first (DMY) interpretation
dmy_result <- fix_date_char(ambiguous_dates)
print(dmy_result)
# Month-first (MDY) interpretation
mdy_result <- fix_date_char(ambiguous_dates, format = "mdy")
print(mdy_result)
```
### Missing Day/Month Imputation
`datefixR` provides flexible control over how missing date components are
imputed:
```{r imputation-example}
# Incomplete dates requiring imputation
incomplete_dates <- c("2023", "05/2023", "2023-08", "march 2022")
# Default imputation: missing month = July (07), missing day = 1st
default_impute <- fix_date_char(incomplete_dates)
print(default_impute)
# Custom imputation: missing month = January (01), missing day = 15th
custom_impute <- fix_date_char(incomplete_dates,
month.impute = 1,
day.impute = 15
)
print(custom_impute)
# For data frames, apply the same logic
incomplete_df <- data.frame(
id = 1:4,
dates = incomplete_dates
)
fixed_incomplete <- fix_date_df(incomplete_df, "dates",
month.impute = 12, # December
day.impute = 31
) # Last day
knitr::kable(fixed_incomplete)
```
This flexibility allows you to choose imputation strategies that make sense for
your specific use case (e.g., fiscal year starts, survey periods, etc.).
### Roman Numerals
`datefixR` can handle Roman numerals being used to denote the month, a format
sometimes used by Oracle Database:
```{r roman-example}
# Roman numeral months
roman_dates <- c(
"15.VII.2023", # July 15, 2023
"3.XII.1999", # December 3, 1999
"1.I.2000" # January 1, 2000
)
fix_date_char(roman_dates, roman.numeral = TRUE)
```
Roman numeral support is experimental and has to be explicitly enabled via
`roman.numeral = TRUE`.
## Performance
This package has recently been optimized for speed using Rust and is now over
300x faster than the largely pure R implementation used in previous versions.
Moreover, a fastpath approach has been implemented for common date formats,
further improving performance in most situations. Finally, `fix_date_df()` now
supports parallelism over columns via the `cores` argument (or via the `'Ncpus'`
global option). As such, speed is now very unlikely to be an issue when using
`datefixR` on large datasets.
## Limitations
Date and time data are often reported together in the same variable (known as
"datetime"). However datetime formats are not supported by `datefixR`. The
current rationale is this package is mostly used to handle dates entered via
free text web forms and it is much less common for both date and time to be
reported together in this input method. However, if there is significant demand
for support for datetime data in the future this may added.
## Similar packages to datefixR
Please note this section is not regularly updated and may be out-of-date by the
the time you read it.
### `lubridate`
[`lubridate::guess_formats()`](https://lubridate.tidyverse.org/reference/guess_formats.html)
can be used to guess a date format and
[`lubridate::parse_date_time()`](https://lubridate.tidyverse.org/reference/parse_date_time.html)
calls this function when it attempts to parse a vector into a POSIXct date-time
object. However:
1. When a date fails to parse in `{lubridate}` then the user is simply told how
many dates failed to parse. In `datefixR` the user is told the ID (assumed
to be the first column by default but can be user-specified) corresponding
to the date which failed to parse and reports the considered date: making it
much easier to figure out which dates supplied failed to parse and why.
2. When imputing a missing day or month, there is no user-control over this
behavior. For example, when imputing a missing month, the user may wish to
impute July, the middle of the year, instead of January. However, January
will always be imputed in `{lubridate}`. In `datefixR`, this behavior can be
controlled by the `month.impute` argument.
3. These functions require all possible date formats to be specified in the
`orders` argument, which may result in a date format not being considered if
the user forgets to list one of the possible formats. By contrast,
`datefixR` only needs a format to be specified if month-first is to be
preferred over day-first when guessing a date.
However, `{lubridate}` of course excels in general date manipulation and is an
excellent tool to use alongside `datefixR`.
### `anytime`
An alternative function is
[`anytime::anydate()`](https://dirk.eddelbuettel.com/code/anytime.html) which
also attempts to convert dates to a consistent format (R's `{Date}`). However,
`anydate()` does not allow the user to control how missing days or months are
imputed (defaulting to the 1st day/month) and assumes dates with missing
components are in YMD format.
```{R}
suppressWarnings(anytime::anydate("May 1994"))
anytime::anydate("1994 May")
```
Two digit years are also not supported.
```{R}
suppressWarnings(anytime::anydate("01/05/94"))
anytime::anydate("01/05/1994")
```
### `parsedate`
`parsedate::parse_date()` also attempts to solve the problem of handling
arbitrary dates and parses dates into the `POSIXct` type. Unfortunately,
`parse_date()` cannot handle years before 1970 -- instead imputing the year as
the current year without any warnings being raised.
```{R}
parsedate::parse_date("april 15 1969")
```
Moreover, `parse_date()` assumes dates are in MDY format and does not allow the
user to specify otherwise. However, `{parsedate}` has excellent support for
handling dates in ISO 8601 formats.
### `stringi`, `readr`, and `clock`
These packages all use
[ICU library](https://unicode-org.github.io/icu/userguide/format_parse/datetime/)
when parsing dates (via `stringi::stri_datetime_parse()`, `readr::parse_date()`,
or `clock::date_parse()`) and therefore all behave very similarly. Notably, all
of these functions require the date format to be specified including specifying
a priori if a date is missing. Ultimately, this makes these packages unsuitable
when numerous dates in different formats must be parsed.
```{R}
readr::parse_date("02/2010", "%m/%Y")
```
However, these packages have support for weekdays and months in around 211
locales whereas `datefixR` supports much fewer languages due to support for
additional languages needing to be implemented individually and by hand.
**Trade-offs to consider:**
- **`datefixR`**: Better error reporting, flexible imputation, handles mixed
formats automatically. Fast.
- **`lubridate`**: Requires format specification, limited imputation control
- **`stringi`/`readr`/`clock`**: Require exact format specification, supports
211 locales
- **`anytime`**: Variable performance, no imputation support, silent failures
For messy, mixed-format data where usability and error handling are priorities,
`datefixR` shines. Now that the core logic is handled in Rust,
performance has improved significantly making it suitable for very large
datasets.
## Contributing to datefixR
If you are interested in contributing to `datefixR`, please read our
[contributing
guide](https://github.com/ropensci/datefixR/blob/main/.github/CONTRIBUTING.md).
Please note that this package is released with a [Contributor Code of
Conduct](https://ropensci.org/code-of-conduct/). By contributing to this
project, you agree to abide by its terms.
## Citation
If you use this package in your research, please consider citing `datefixR`! An
up-to-date citation can be obtained by running
```{R, results = "hide"}
citation("datefixR")
```
Owner
- Name: rOpenSci
- Login: ropensci
- Kind: organization
- Email: info@ropensci.org
- Location: Berkeley, CA
- Website: https://ropensci.org/
- Twitter: rOpenSci
- Repositories: 307
- Profile: https://github.com/ropensci
Citation (CITATION.cff)
# --------------------------------------------
# CITATION file created with {cffr} R package
# See also: https://docs.ropensci.org/cffr/
# --------------------------------------------
cff-version: 1.2.0
message: 'To cite package "datefixR" in publications use:'
type: software
license: GPL-3.0-or-later
title: 'datefixR: Standardize Dates in Different Formats or with Missing Data'
version: 2.0.0
doi: 10.5281/zenodo.5655311
identifiers:
- type: doi
value: 10.32614/CRAN.package.datefixR
abstract: 'There are many different formats dates are commonly represented with: the
order of day, month, or year can differ, different separators ("-", "/", or whitespace)
can be used, months can be numerical, names, or abbreviations and year given as
two digits or four. ''datefixR'' takes dates in all these different formats and
converts them to R''s built-in date class. If ''datefixR'' cannot standardize a
date, such as because it is too malformed, then the user is told which date cannot
be standardized and the corresponding ID for the row. ''datefixR'' also allows the
imputation of missing days and months with user-controlled behavior.'
authors:
- family-names: Constantine-Cooke
given-names: Nathan
email: nathan.constantine-cooke@ed.ac.uk
orcid: https://orcid.org/0000-0002-4437-8713
preferred-citation:
type: manual
title: 'datefixR: Standardize Dates in Different Formats or with Missing Data'
authors:
- family-names: Constantine-Cooke
given-names: Nathan
email: nathan.constantine-cooke@ed.ac.uk
orcid: https://orcid.org/0000-0002-4437-8713
year: '2025'
notes: R package version 2.0.0
doi: 10.5281/zenodo.5655311
url: https://CRAN.R-project.org/package=datefixR
repository: https://CRAN.R-project.org/package=datefixR
repository-code: https://github.com/ropensci/datefixR
url: https://docs.ropensci.org/datefixR/
contact:
- family-names: Constantine-Cooke
given-names: Nathan
email: nathan.constantine-cooke@ed.ac.uk
orcid: https://orcid.org/0000-0002-4437-8713
keywords:
- dates
- r
- r-package
- rstats
- wrangling
references:
- type: software
title: 'R: A Language and Environment for Statistical Computing'
notes: Depends
url: https://www.R-project.org/
authors:
- name: R Core Team
institution:
name: R Foundation for Statistical Computing
address: Vienna, Austria
year: '2025'
version: '>= 4.2'
- type: software
title: lifecycle
abstract: 'lifecycle: Manage the Life Cycle of your Package Functions'
notes: Imports
url: https://lifecycle.r-lib.org/
repository: https://CRAN.R-project.org/package=lifecycle
authors:
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
year: '2025'
doi: 10.32614/CRAN.package.lifecycle
- type: software
title: rlang
abstract: 'rlang: Functions for Base Types and Core R and ''Tidyverse'' Features'
notes: Imports
url: https://rlang.r-lib.org
repository: https://CRAN.R-project.org/package=rlang
authors:
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2025'
doi: 10.32614/CRAN.package.rlang
- type: software
title: DT
abstract: 'DT: A Wrapper of the JavaScript Library ''DataTables'''
notes: Suggests
url: https://github.com/rstudio/DT
repository: https://CRAN.R-project.org/package=DT
authors:
- family-names: Xie
given-names: Yihui
- family-names: Cheng
given-names: Joe
email: joe@posit.co
- family-names: Tan
given-names: Xianying
year: '2025'
doi: 10.32614/CRAN.package.DT
- type: software
title: future
abstract: 'future: Unified Parallel and Distributed Processing in R for Everyone'
notes: Suggests
url: https://future.futureverse.org
repository: https://CRAN.R-project.org/package=future
authors:
- family-names: Bengtsson
given-names: Henrik
email: henrikb@braju.com
orcid: https://orcid.org/0000-0002-7579-5165
year: '2025'
doi: 10.32614/CRAN.package.future
- type: software
title: future.apply
abstract: 'future.apply: Apply Function to Elements in Parallel using Futures'
notes: Suggests
url: https://future.apply.futureverse.org
repository: https://CRAN.R-project.org/package=future.apply
authors:
- family-names: Bengtsson
given-names: Henrik
email: henrikb@braju.com
orcid: https://orcid.org/0000-0002-7579-5165
year: '2025'
doi: 10.32614/CRAN.package.future.apply
- type: software
title: htmltools
abstract: 'htmltools: Tools for HTML'
notes: Suggests
url: https://rstudio.github.io/htmltools/
repository: https://CRAN.R-project.org/package=htmltools
authors:
- family-names: Cheng
given-names: Joe
email: joe@posit.co
- family-names: Sievert
given-names: Carson
email: carson@posit.co
orcid: https://orcid.org/0000-0002-4958-2844
- family-names: Schloerke
given-names: Barret
email: barret@posit.co
orcid: https://orcid.org/0000-0001-9986-114X
- family-names: Chang
given-names: Winston
email: winston@posit.co
orcid: https://orcid.org/0000-0002-1576-2126
- family-names: Xie
given-names: Yihui
email: yihui@posit.co
- family-names: Allen
given-names: Jeff
year: '2025'
doi: 10.32614/CRAN.package.htmltools
- type: software
title: knitr
abstract: 'knitr: A General-Purpose Package for Dynamic Report Generation in R'
notes: Suggests
url: https://yihui.org/knitr/
repository: https://CRAN.R-project.org/package=knitr
authors:
- family-names: Xie
given-names: Yihui
email: xie@yihui.name
orcid: https://orcid.org/0000-0003-0645-5666
year: '2025'
doi: 10.32614/CRAN.package.knitr
- type: software
title: parsedate
abstract: 'parsedate: Recognize and Parse Dates in Various Formats, Including All
ISO 8601 Formats'
notes: Suggests
url: https://github.com/gaborcsardi/parsedate
repository: https://CRAN.R-project.org/package=parsedate
authors:
- family-names: Csárdi
given-names: Gábor
email: csardi.gabor@gmail.com
- family-names: Torvalds
given-names: Linus
year: '2025'
doi: 10.32614/CRAN.package.parsedate
- type: software
title: pkgbuild
abstract: 'pkgbuild: Find Tools Needed to Build R Packages'
notes: Suggests
url: https://pkgbuild.r-lib.org
repository: https://CRAN.R-project.org/package=pkgbuild
authors:
- family-names: Wickham
given-names: Hadley
- family-names: Hester
given-names: Jim
- family-names: Csárdi
given-names: Gábor
email: csardi.gabor@gmail.com
year: '2025'
doi: 10.32614/CRAN.package.pkgbuild
- type: software
title: png
abstract: 'png: Read and write PNG images'
notes: Suggests
url: http://www.rforge.net/png/
repository: https://CRAN.R-project.org/package=png
authors:
- family-names: Urbanek
given-names: Simon
email: Simon.Urbanek@r-project.org
year: '2025'
doi: 10.32614/CRAN.package.png
- type: software
title: readr
abstract: 'readr: Read Rectangular Text Data'
notes: Suggests
url: https://readr.tidyverse.org
repository: https://CRAN.R-project.org/package=readr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Hester
given-names: Jim
- family-names: Bryan
given-names: Jennifer
email: jenny@posit.co
orcid: https://orcid.org/0000-0002-6983-2759
year: '2025'
doi: 10.32614/CRAN.package.readr
- type: software
title: readxl
abstract: 'readxl: Read Excel Files'
notes: Suggests
url: https://readxl.tidyverse.org
repository: https://CRAN.R-project.org/package=readxl
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
- family-names: Bryan
given-names: Jennifer
email: jenny@posit.co
orcid: https://orcid.org/0000-0002-6983-2759
year: '2025'
doi: 10.32614/CRAN.package.readxl
- type: software
title: rmarkdown
abstract: 'rmarkdown: Dynamic Documents for R'
notes: Suggests
url: https://pkgs.rstudio.com/rmarkdown/
repository: https://CRAN.R-project.org/package=rmarkdown
authors:
- family-names: Allaire
given-names: JJ
email: jj@posit.co
- family-names: Xie
given-names: Yihui
email: xie@yihui.name
orcid: https://orcid.org/0000-0003-0645-5666
- family-names: Dervieux
given-names: Christophe
email: cderv@posit.co
orcid: https://orcid.org/0000-0003-4474-2498
- family-names: McPherson
given-names: Jonathan
email: jonathan@posit.co
- family-names: Luraschi
given-names: Javier
- family-names: Ushey
given-names: Kevin
email: kevin@posit.co
- family-names: Atkins
given-names: Aron
email: aron@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Cheng
given-names: Joe
email: joe@posit.co
- family-names: Chang
given-names: Winston
email: winston@posit.co
- family-names: Iannone
given-names: Richard
email: rich@posit.co
orcid: https://orcid.org/0000-0003-3925-190X
year: '2025'
doi: 10.32614/CRAN.package.rmarkdown
- type: software
title: shiny
abstract: 'shiny: Web Application Framework for R'
notes: Suggests
url: https://shiny.posit.co/
repository: https://CRAN.R-project.org/package=shiny
authors:
- family-names: Chang
given-names: Winston
email: winston@posit.co
orcid: https://orcid.org/0000-0002-1576-2126
- family-names: Cheng
given-names: Joe
email: joe@posit.co
- family-names: Allaire
given-names: JJ
email: jj@posit.co
- family-names: Sievert
given-names: Carson
email: carson@posit.co
orcid: https://orcid.org/0000-0002-4958-2844
- family-names: Schloerke
given-names: Barret
email: barret@posit.co
orcid: https://orcid.org/0000-0001-9986-114X
- family-names: Xie
given-names: Yihui
email: yihui@posit.co
- family-names: Allen
given-names: Jeff
- family-names: McPherson
given-names: Jonathan
email: jonathan@posit.co
- family-names: Dipert
given-names: Alan
- family-names: Borges
given-names: Barbara
year: '2025'
doi: 10.32614/CRAN.package.shiny
- type: software
title: shinytest2
abstract: 'shinytest2: Testing for Shiny Applications'
notes: Suggests
url: https://rstudio.github.io/shinytest2/
repository: https://CRAN.R-project.org/package=shinytest2
authors:
- family-names: Schloerke
given-names: Barret
email: barret@posit.co
orcid: https://orcid.org/0000-0001-9986-114X
year: '2025'
doi: 10.32614/CRAN.package.shinytest2
- type: software
title: spelling
abstract: 'spelling: Tools for Spell Checking in R'
notes: Suggests
url: https://ropensci.r-universe.dev/spelling
repository: https://CRAN.R-project.org/package=spelling
authors:
- family-names: Ooms
given-names: Jeroen
email: jeroenooms@gmail.com
orcid: https://orcid.org/0000-0002-4035-0289
- family-names: Hester
given-names: Jim
email: james.hester@rstudio.com
year: '2025'
doi: 10.32614/CRAN.package.spelling
- type: software
title: testthat
abstract: 'testthat: Unit Testing for R'
notes: Suggests
url: https://testthat.r-lib.org
repository: https://CRAN.R-project.org/package=testthat
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2025'
doi: 10.32614/CRAN.package.testthat
version: '>= 3.0.0'
- type: software
title: withr
abstract: 'withr: Run Code ''With'' Temporarily Modified Global State'
notes: Suggests
url: https://withr.r-lib.org
repository: https://CRAN.R-project.org/package=withr
authors:
- family-names: Hester
given-names: Jim
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Müller
given-names: Kirill
email: krlmlr+r@mailbox.org
- family-names: Ushey
given-names: Kevin
email: kevinushey@gmail.com
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Chang
given-names: Winston
year: '2025'
doi: 10.32614/CRAN.package.withr
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "datefixR",
"description": "There are many different formats dates are commonly represented with: the order of day, month, or year can differ, different separators (\"-\", \"/\", or whitespace) can be used, months can be numerical, names, or abbreviations and year given as two digits or four. 'datefixR' takes dates in all these different formats and converts them to R's built-in date class. If 'datefixR' cannot standardize a date, such as because it is too malformed, then the user is told which date cannot be standardized and the corresponding ID for the row. 'datefixR' also allows the imputation of missing days and months with user-controlled behavior.",
"name": "datefixR: Standardize Dates in Different Formats or with Missing Data",
"relatedLink": "https://docs.ropensci.org/datefixR/",
"codeRepository": "https://github.com/ropensci/datefixR",
"issueTracker": "https://github.com/ropensci/datefixR/issues",
"license": "https://spdx.org/licenses/GPL-3.0",
"version": "2.0.0",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.5.1 (2025-06-13)",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"author": [
{
"@type": "Person",
"givenName": "Nathan",
"familyName": "Constantine-Cooke",
"email": "nathan.constantine-cooke@ed.ac.uk",
"@id": "https://orcid.org/0000-0002-4437-8713"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "Jonathan",
"familyName": "Kitt",
"email": "jonathan.kitt@protonmail.com"
},
{
"@type": "Person",
"givenName": "Antonio J.",
"familyName": "Prez-Luque",
"email": "ajpelu@gmail.com",
"@id": "https://orcid.org/0000-0002-1747-0469"
},
{
"@type": "Person",
"givenName": "Daniel",
"familyName": "Possenriede",
"email": "possenriede+r@gmail.com",
"@id": "https://orcid.org/0000-0002-6738-9845"
},
{
"@type": "Person",
"givenName": "Michal",
"familyName": "Lauer",
"email": "michal.lauer.25@gmail.com"
},
{
"@type": "Person",
"givenName": "Anatoly",
"familyName": "Tsyplenkov",
"email": "atsyplenkov@gmail.com",
"@id": "https://orcid.org/0000-0003-4144-8402"
},
{
"@type": "Person",
"givenName": "Chitra M.",
"familyName": "Saraswati",
"email": "chitra.m.saraswati@gmail.com",
"@id": "https://orcid.org/0000-0002-8159-0414"
},
{
"@type": "Person",
"givenName": "Jonathan",
"familyName": "Kitt",
"email": "jonathan.kitt@protonmail.com"
},
{
"@type": "Person",
"givenName": "Antonio J.",
"familyName": "Prez-Luque",
"email": "ajpelu@gmail.com",
"@id": "https://orcid.org/0000-0002-1747-0469"
},
{
"@type": "Person",
"givenName": "Daniel",
"familyName": "Possenriede",
"email": "possenriede+r@gmail.com",
"@id": "https://orcid.org/0000-0002-6738-9845"
},
{
"@type": "Person",
"givenName": "Michal",
"familyName": "Lauer",
"email": "michal.lauer.25@gmail.com"
},
{
"@type": "Person",
"givenName": "Anatoly",
"familyName": "Tsyplenkov",
"email": "atsyplenkov@gmail.com",
"@id": "https://orcid.org/0000-0003-4144-8402"
},
{
"@type": "Person",
"givenName": "Chitra M.",
"familyName": "Saraswati",
"email": "chitra.m.saraswati@gmail.com",
"@id": "https://orcid.org/0000-0002-8159-0414"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Nathan",
"familyName": "Constantine-Cooke",
"email": "nathan.constantine-cooke@ed.ac.uk",
"@id": "https://orcid.org/0000-0002-4437-8713"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "DT",
"name": "DT",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=DT"
},
{
"@type": "SoftwareApplication",
"identifier": "future",
"name": "future",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=future"
},
{
"@type": "SoftwareApplication",
"identifier": "future.apply",
"name": "future.apply",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=future.apply"
},
{
"@type": "SoftwareApplication",
"identifier": "htmltools",
"name": "htmltools",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=htmltools"
},
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "parsedate",
"name": "parsedate",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=parsedate"
},
{
"@type": "SoftwareApplication",
"identifier": "pkgbuild",
"name": "pkgbuild",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=pkgbuild"
},
{
"@type": "SoftwareApplication",
"identifier": "png",
"name": "png",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=png"
},
{
"@type": "SoftwareApplication",
"identifier": "readr",
"name": "readr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=readr"
},
{
"@type": "SoftwareApplication",
"identifier": "readxl",
"name": "readxl",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=readxl"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
},
{
"@type": "SoftwareApplication",
"identifier": "shiny",
"name": "shiny",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shiny"
},
{
"@type": "SoftwareApplication",
"identifier": "shinytest2",
"name": "shinytest2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shinytest2"
},
{
"@type": "SoftwareApplication",
"identifier": "spelling",
"name": "spelling",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=spelling"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
},
{
"@type": "SoftwareApplication",
"identifier": "withr",
"name": "withr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=withr"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 4.2"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "lifecycle",
"name": "lifecycle",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=lifecycle"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "rlang",
"name": "rlang",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rlang"
},
"SystemRequirements": "Cargo (Rust's package manager), rustc"
},
"fileSize": "8143.04KB",
"citation": [
{
"@type": "SoftwareSourceCode",
"datePublished": "2025",
"author": [
{
"@type": "Person",
"givenName": "Nathan",
"familyName": "Constantine-Cooke"
}
],
"name": "{datefixR}: Standardize Dates in Different Formats or with Missing Data",
"identifier": "10.5281/zenodo.5655311",
"url": "https://CRAN.R-project.org/package=datefixR",
"description": "R package version 2.0.0",
"@id": "https://doi.org/10.5281/zenodo.5655311",
"sameAs": "https://doi.org/10.5281/zenodo.5655311"
}
]
}
GitHub Events
Total
- Create event: 5
- Release event: 1
- Issues event: 3
- Delete event: 1
- Issue comment event: 3
- Push event: 64
- Pull request event: 35
Last Year
- Create event: 5
- Release event: 1
- Issues event: 3
- Delete event: 1
- Issue comment event: 3
- Push event: 64
- Pull request event: 35
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Nathan Constantine-Cooke | n****e@e****k | 326 |
| github-actions[bot] | g****] | 73 |
| Daniel Possenriede | p****e@g****m | 8 |
| dependabot[bot] | 4****] | 5 |
| Michal Lauer | m****5@g****m | 4 |
| Anatolii Tsyplenkov | a****v@g****m | 3 |
| chitrams | 1****s | 2 |
| Jonathan Kitt | j****t@p****m | 2 |
| Antonio J Perez-Luque | a****u@g****m | 2 |
| mt-gitlocalize | mt@g****m | 1 |
| gitlocalize-app[bot] | 5****] | 1 |
| Jonathan GuallasamÃn | 7****n | 1 |
| Anatolii Tsyplenkov | t****a@l****z | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 47
- Total pull requests: 87
- Average time to close issues: 2 months
- Average time to close pull requests: 2 days
- Total issue authors: 8
- Total pull request authors: 10
- Average comments per issue: 1.38
- Average comments per pull request: 0.49
- Merged pull requests: 72
- Bot issues: 0
- Bot pull requests: 39
Past Year
- Issues: 2
- Pull requests: 26
- Average time to close issues: 9 days
- Average time to close pull requests: 1 day
- Issue authors: 2
- Pull request authors: 4
- Average comments per issue: 1.5
- Average comments per pull request: 0.08
- Merged pull requests: 14
- Bot issues: 0
- Bot pull requests: 23
Top Authors
Issue Authors
- nathansam (33)
- adamhsparks (4)
- dpprdan (3)
- alstat (2)
- robin-hutchinson (2)
- eddelbuettel (1)
- atsyplenkov (1)
- KittJonathan (1)
Pull Request Authors
- nathansam (37)
- github-actions[bot] (30)
- gitlocalize-app[bot] (9)
- dependabot[bot] (7)
- dpprdan (5)
- chitrams (2)
- atsyplenkov (1)
- KittJonathan (1)
- Guallasamin (1)
- ajpelu (1)
Top Labels
Issue Labels
enhancement (5)
help wanted (3)
good first issue (1)
documentation (1)
bug (1)
Pull Request Labels
dependencies (7)
Packages
- Total packages: 1
-
Total downloads:
- cran 549 last-month
- Total dependent packages: 0
- Total dependent repositories: 1
- Total versions: 17
- Total maintainers: 1
cran.r-project.org: datefixR
Standardize Dates in Different Formats or with Missing Data
- Homepage: https://docs.ropensci.org/datefixR/
- Documentation: http://cran.r-project.org/web/packages/datefixR/datefixR.pdf
- License: GPL (≥ 3)
-
Latest release: 2.0.0
published 6 months ago
Rankings
Stargazers count: 9.0%
Forks count: 12.2%
Average: 19.2%
Downloads: 22.4%
Dependent repos count: 23.8%
Dependent packages count: 28.7%
Maintainers (1)
Last synced:
6 months ago
Dependencies
DESCRIPTION
cran
- R >= 4.0.0 depends
- stringr * imports
- knitr * suggests
- rmarkdown * suggests
- spelling * suggests
- testthat >= 3.0.0 suggests
.github/workflows/R-CMD-check.yaml
actions
- actions/checkout v3 composite
- actions/upload-artifact v3 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/deploy-shiny.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-r v2 composite
.github/workflows/hello-to-new-contributions.yml
actions
- actions/first-interaction v1 composite
.github/workflows/pr-commands.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/pr-fetch v2 composite
- r-lib/actions/pr-push v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/update-citation-cff.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite