The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Create and save a tabular-data-resource

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:

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"))
#> /var/folders/pg/q33bfwtj57d_v3vqpl7g26400000gn/T/RtmpGUoi9l/types_example
#> ├── tabular-data-resource.yaml
#> └── types_example.csv

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.