--- title: "First PX-file" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{First PX-file} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` To create your first PX-file with pxmake, you can either start with an existing PX-file, or use a data set. ## How to create a PX-file from a data set All workflows in pxmake, starts the same way: by using the `px()` to create a *px object*. Here we are using the built in dataset `population_gl`. ```{r} library(pxmake) population_gl |> head(10) |> print() ``` To create the px object, simply pass the data set to the `px()` function. ```{r} x <- px(population_gl) ``` `x` is now a px object. The word *object* just means that the PX-file is stored in a specific format that all functions in the pxmake package uses. Use `px_save()` to save the px object as a PX-file. ```{r} px_save(x, "population_gl.px") ``` Since we provided no metadata, `px()` added a minimal set of metadata, which is necessary for creating a valid PX-file. The resulting PX-file can be seen below. ```{r, comment="", echo = FALSE} readLines('population_gl.px') |> cat(sep = '\n') ``` ## How to create a PX-file from a PX-file If you already have a PX-file, that you want to manipulate using pxmake, simple pass the path of the file, to the `px()` function. ```{r} x2 <- px("population_gl.px") ``` Just as with the dataset, `x2` is now a px object and can be saved or modified using the other functions in pxmake. ## Modifying a px object The real fun starts when you start modifying the px object, using one of pxmake many built in functions. In general, each px keyword has a corresponding function in pxmake. For example, to change the title of the PX-file, you can use the `px_title()` function. ```{r} x3 <- px_title(x, "Population in Greenland") ``` The `px_title()` function returns a new px object, with the title changed. The original px object is not modified. ```{r} x3 |> px_codepage("UTF-8") |> # Change file encoding px_matrix("pop") |> px_contact("Johan Ejstrud") |> px_subject_code("GL") |> px_subject_area("Greenland") |> px_timeval("year") |> px_contents("Population in Greenland") |> px_units("People") |> px_note("See information about data: ?population_gl") |> px_last_updated(format(Sys.time(), "%Y%m%d %H:%M")) |> px_stub(c("age", "gender")) |> # Change order of STUB variables px_save("population_gl_modified.px") ``` The resulting PX-file can be seen below. ```{r, comment="", echo = FALSE} readLines('population_gl_modified.px') |> cat(sep = '\n') ``` ## Advanced use See the other vignettes for more advanced use cases: - `vignette("languages")` - `vignette("micro-files")`