mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-21 21:10:22 +01:00
new function to create instrument meta data
This commit is contained in:
parent
23ebdb5ee7
commit
6343d68cb5
50
R/create_instrument_meta.R
Normal file
50
R/create_instrument_meta.R
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#' Create zips file with necessary content based on data set
|
||||||
|
#'
|
||||||
|
#' @description
|
||||||
|
#' Metadata can be added by editing the data dictionary of a project in the
|
||||||
|
#' initial design phase. If you want to later add new instruments, this can be
|
||||||
|
#' used to add instrument(s) to a project in production.
|
||||||
|
#'
|
||||||
|
#' @param data metadata for the relevant instrument.
|
||||||
|
#' Could be from `ds2dd_detailed()`
|
||||||
|
#' @param dir destination dir for the instrument zip. Default is the current WD.
|
||||||
|
#' @param record.id flag to omit the first row of the data dictionary assuming
|
||||||
|
#' this is the record_id field which should not be included in the instrument.
|
||||||
|
#' Default is TRUE.
|
||||||
|
#'
|
||||||
|
#' @return list
|
||||||
|
#' @export
|
||||||
|
#'
|
||||||
|
#' @examples
|
||||||
|
#' data <- iris |>
|
||||||
|
#' ds2dd_detailed(add.auto.id = TRUE,
|
||||||
|
#' form.name=sample(c("b","c"),size = 6,replace = TRUE,prob=rep(.5,2))) |>
|
||||||
|
#' purrr::pluck("meta")
|
||||||
|
#' # data |> create_instrument_meta()
|
||||||
|
#'
|
||||||
|
#' data <- iris |>
|
||||||
|
#' ds2dd_detailed(add.auto.id = FALSE) |>
|
||||||
|
#' purrr::pluck("data")
|
||||||
|
#' names(data) <- glue::glue("{sample(x = c('a','b'),size = length(names(data)),
|
||||||
|
#' replace=TRUE,prob = rep(x=.5,2))}__{names(data)}")
|
||||||
|
#' data <- data |> ds2dd_detailed(form.sep="__")
|
||||||
|
#' # data |>
|
||||||
|
#' # purrr::pluck("meta") |>
|
||||||
|
#' # create_instrument_meta(record.id = FALSE)
|
||||||
|
create_instrument_meta <- function(data,
|
||||||
|
dir = here::here(""),
|
||||||
|
record.id = TRUE) {
|
||||||
|
if (record.id) {
|
||||||
|
data <- data[-1,]
|
||||||
|
}
|
||||||
|
temp_dir <- tempdir()
|
||||||
|
split(data,data$form_name) |> purrr::imap(function(.x,.i){
|
||||||
|
utils::write.csv(.x, paste0(temp_dir, "/instrument.csv"), row.names = FALSE, na = "")
|
||||||
|
writeLines("REDCapCAST", paste0(temp_dir, "/origin.txt"))
|
||||||
|
zip::zip(paste0(dir, "/", .i, Sys.Date(), ".zip"),
|
||||||
|
files = c("origin.txt", "instrument.csv"),
|
||||||
|
root = temp_dir
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
43
man/create_instrument_meta.Rd
Normal file
43
man/create_instrument_meta.Rd
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
% Generated by roxygen2: do not edit by hand
|
||||||
|
% Please edit documentation in R/create_instrument_meta.R
|
||||||
|
\name{create_instrument_meta}
|
||||||
|
\alias{create_instrument_meta}
|
||||||
|
\title{Create zips file with necessary content based on data set}
|
||||||
|
\usage{
|
||||||
|
create_instrument_meta(data, dir = here::here(""), record.id = TRUE)
|
||||||
|
}
|
||||||
|
\arguments{
|
||||||
|
\item{data}{metadata for the relevant instrument.
|
||||||
|
Could be from `ds2dd_detailed()`}
|
||||||
|
|
||||||
|
\item{dir}{destination dir for the instrument zip. Default is the current WD.}
|
||||||
|
|
||||||
|
\item{record.id}{flag to omit the first row of the data dictionary assuming
|
||||||
|
this is the record_id field which should not be included in the instrument.
|
||||||
|
Default is TRUE.}
|
||||||
|
}
|
||||||
|
\value{
|
||||||
|
list
|
||||||
|
}
|
||||||
|
\description{
|
||||||
|
Metadata can be added by editing the data dictionary of a project in the
|
||||||
|
initial design phase. If you want to later add new instruments, this can be
|
||||||
|
used to add instrument(s) to a project in production.
|
||||||
|
}
|
||||||
|
\examples{
|
||||||
|
data <- iris |>
|
||||||
|
ds2dd_detailed(add.auto.id = TRUE,
|
||||||
|
form.name=sample(c("b","c"),size = 6,replace = TRUE,prob=rep(.5,2))) |>
|
||||||
|
purrr::pluck("meta")
|
||||||
|
# data |> create_instrument_meta()
|
||||||
|
|
||||||
|
data <- iris |>
|
||||||
|
ds2dd_detailed(add.auto.id = FALSE) |>
|
||||||
|
purrr::pluck("data")
|
||||||
|
names(data) <- glue::glue("{sample(x = c('a','b'),size = length(names(data)),
|
||||||
|
replace=TRUE,prob = rep(x=.5,2))}__{names(data)}")
|
||||||
|
data <- data |> ds2dd_detailed(form.sep="__")
|
||||||
|
# data |>
|
||||||
|
# purrr::pluck("meta") |>
|
||||||
|
# create_instrument_meta(record.id = FALSE)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user