Skip to content

insightsengineering/dunlin

Repository files navigation

dunlin: Tools for Clinical Trial Data Wrangling

Check πŸ›  Docs πŸ“š Code Coverage πŸ“”

GitHub forks GitHub repo stars

GitHub commit activity GitHub contributors GitHub last commit GitHub pull requests GitHub repo size GitHub language count Project Status: Active – The project has reached a stable, usable state and is being actively developed. Current Version Open Issues

dunlin provides a variety of data tools to reformat and manipulate a subset of the tables in a data set.

Installation

install.packages("dunlin", repos = c("https://insightsengineering.r-universe.dev", getOption("repos")))

# install.packages("pak")
pak::pak("insightsengineering/dunlin@*release")

Alternatively, you might also use the development version.

install.packages("dunlin", repos = c("https://pharmaverse.r-universe.dev", getOption("repos")))

# install.packages("pak")
pak::pak("insightsengineering/dunlin")

Usage

library(dunlin)

df1 <- data.frame(
  "id" = c("a", "b", NA, "a", "k", "x"),
  "id2" = factor(c("f1", "f2", NA, NA, "f1", "f1")),
  "val" = letters[1:6]
)
df2 <- data.frame(
  "id" = c("a", "b", NA, "a", "k", "x"),
  "id2" = factor(c("f1", "f2", NA, NA, "f1", "f1")),
  "num" = 1:6
)

db <- list(df1 = df1, df2 = df2)

prop_db <- propagate(db, "df1", "val", c("id", "id2"))

which returns prop_db as

 $df1
    id  id2 val
1    a   f1   a
2    b   f2   b
3 <NA> <NA>   c
4    a <NA>   d
5    k   f1   e
6    x   f1   f

$df2
    id  id2 num val
1    a   f1   1   a
2    b   f2   2   b
3 <NA> <NA>   3   c
4    a <NA>   4   d
5    k   f1   5   e
6    x   f1   6   f
new_format <- list(
  df1 = list(
    id = rule("No ID available" = c("", NA, "<Missing>")),
    id2 = rule("<Missing>" = c("", NA, "<Missing>"))
  )
)

res <- reformat(prop_db, new_format, .na_last = TRUE)

which result in res as

$df1
               id       id2 val
1               a        f1   a
2               b        f2   b
3 No ID available <Missing>   c
4               a <Missing>   d
5               k        f1   e
6               x        f1   f

$df2
    id  id2 num val
1    a   f1   1   a
2    b   f2   2   b
3 <NA> <NA>   3   c
4    a <NA>   4   d
5    k   f1   5   e
6    x   f1   6   f

Stargazers and Forkers

Stargazers over time

Stargazers over time

Stargazers

Stargazers repo roster for dunlin

Forkers repo roster for dunlin