Create and save a tabular-data-resource
Source:vignettes/creating_a_tabular-data-resource.Rmd
creating_a_tabular-data-resource.Rmd
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:
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:
sapply(d, class)
#> id date measure rating ranking impt
#> "character" "Date" "numeric" "factor" "numeric" "logical"
d
#> # A tibble: 3 × 6
#> id date measure rating ranking impt
#> <chr> <date> <dbl> <fct> <dbl> <lgl>
#> 1 A01 2022-07-25 12.8 good 14 FALSE
#> 2 A02 2018-07-10 13.9 best 17 TRUE
#> 3 A03 2013-08-15 15.6 best 19 TRUE
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
).
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:
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
:
write_fr_tdr(d_tdr, dir = tempdir())
fs::dir_tree(fs::path(tempdir(), "types_example"))
#> /tmp/Rtmp3vIsoq/types_example
#> ├── tabular-data-resource.yaml
#> └── types_example.csv