--- title: "Create and save a tabular-data-resource" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Create and save a tabular-data-resource} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(fr) ``` To illustrate, we will create a short tibble with a lot of different types of fields. Imagine that `rating` is a factor with three possible levels (`good`, `better`, `best`), but only two of them are present in the data: ```{r} d <- tibble::tibble( id = c("A01", "A02", "A03"), date = as.Date(c("2022-07-25", "2018-07-10", "2013-08-15")), measure = c(12.8, 13.9, 15.6), rating = factor(c("good", "best", "best"), levels = c("good", "better", "best")), ranking = c(14, 17, 19), impt = c(FALSE, TRUE, TRUE) ) ``` Our example only has three rows, but in reality, any data frame imported, created, or curated using R can be used to create a tabular-data-resource. We can see that we prepared a tibble with several different types of columns. Each column, or vector, has a native R class associated with it: ```{r} sapply(d, class) d ``` Convert the data frame into a `fr_tdr` object by using `as_fr_tdr()` and specifying some table-specific metadata. `as_fr_tdr()` uses the class of each column in R to automatically create all of the frictionless field-specific metadata (`name`, `type`, `constraints`). ```{r} d_tdr <- d |> as_fr_tdr( name = "types_example", version = "0.1.0", title = "Example Data with Types", homepage = "https://geomarker.io", description = "This is used as an example dataset in the {fr} package vignette on `Creating a tabular-data-resource`." ) ``` Reach in and update field-specific metadata: ```{r} d_tdr <- d_tdr |> update_field("id", title = "Identifier", description = "This is a unique identifier for each study participant.") ``` Write this to disk with `write_fr_tdr`: ```{r} write_fr_tdr(d_tdr, dir = tempdir()) fs::dir_tree(fs::path(tempdir(), "types_example")) ```