Learn R Programming

dm (version 0.0.6.9000)

dm_zoom_to: Single out a table of a dm

Description

Zooming to a table of a dm allows for the use of many dplyr-verbs directly on this table, while retaining the context of the dm object.

Usage

dm_zoom_to(dm, table)

dm_insert_zoomed(dm, new_tbl_name = NULL, repair = "unique", quiet = FALSE)

dm_update_zoomed(dm)

dm_discard_zoomed(dm)

Arguments

dm

A dm object.

table

A table in the dm.

new_tbl_name

Name of the new table.

repair

Either a string or a function. If a string, it must be one of "check_unique", "minimal", "unique", or "universal". If a function, it is invoked with a vector of minimal names and must return minimal names, otherwise an error is thrown.

  • Minimal names are never NULL or NA. When an element doesn't have a name, its minimal name is an empty string.

  • Unique names are unique. A suffix is appended to duplicate names to make them unique.

  • Universal names are unique and syntactic, meaning that you can safely use the names as variables without causing a syntax error.

The "check_unique" option doesn't perform any name repair. Instead, an error is raised if the names don't suit the "unique" criteria.

quiet

By default, the user is informed of any renaming caused by repairing the names. This only concerns unique and universal repairing. Set quiet to TRUE to silence the messages.

Value

For dm_zoom_to(): A zoomed_dm object.

For dm_insert_zoomed(), dm_update_zoomed() and dm_discard_zoomed(): A dm object.

Details

dm_zoom_to(): zooms to the given table.

dm_update_zoomed(): overwrites the originally zoomed table with the manipulated table. The filter conditions for the zoomed table are added to the original filter conditions.

dm_insert_zoomed(): adds a new table to the dm.

dm_discard_zoomed(): discards the zoomed table and returns the dm as it was before zooming.

Whenever possible, the key relations of the original table are transferred to the resulting table when using dm_insert_zoomed() or dm_update_zoomed().

Functions from dplyr that are supported for a zoomed_dm: group_by(), summarise(), mutate(), transmute(), filter(), select(), rename() and ungroup(). You can use these functions just like you would with a normal table.

In addition to filtering the zoomed table, the filter condition from filter() is also stored in the dm. Depending on which function you use to return to a normal dm, one of the following happens:

  1. dm_discard_zoomed(): all filter conditions for the zoomed table are discarded

  2. dm_update_zoomed(): the filter conditions of the original table and those of the zoomed table are combined

  3. dm_insert_zoomed(): the filter conditions of the original table stay there and those of the zoomed table are transferred to the new table of the dm

Furthermore, the different join()-variants from dplyr are also supported (apart from nest_join()). The join-methods for zoomed_dm have an extra argument select that let's you choose the columns of the RHS table in a tidyselect manner.

And -- last but not least -- also the tidyr-functions unite() and separate() are supported for zoomed_dm.

Examples

Run this code
# NOT RUN {
library(dplyr)
flights_zoomed <- dm_zoom_to(dm_nycflights13(), flights)

flights_zoomed

flights_zoomed_transformed <-
  flights_zoomed %>%
  mutate(am_pm_dep = if_else(dep_time < 1200, "am", "pm")) %>%
  # `by`-argument of `left_join()` can be explicitly given
  # otherwise the key-relation is used
  left_join(airports) %>%
  select(year:dep_time, am_pm_dep, everything())

# replace table `flights` with the zoomed table
dm_update_zoomed(flights_zoomed_transformed)

# insert the zoomed table as a new table
dm_insert_zoomed(flights_zoomed_transformed, extended_flights)

# discard the zoomed table
dm_discard_zoomed(flights_zoomed_transformed)
# }

Run the code above in your browser using DataLab