Variables in Crunch datasets are organized into folders, like in a file
system. Datasets are similarly organized into hierarchical Projects.
These functions allow you to create new folders and move objects into
folders. Their names, mv
and mkdir
, suggest their Unix file utility
inspiration.
mv(x, what, path)
mkdir(x, path)
A CrunchDataset
or Folder
(VariableFolder
or ProjectFolder
)
A Variable, selection of variables from dataset
, or any
other object that can be moved to a folder (e.g. a dataset when organizing
projects).
A character "path" to the folder: either a
vector of nested folder names or a single string with nested folders
separated by a delimiter ("/" default, configurable via
options(crunch.delimiter)
). The path is interpreted as
relative to the location of the folder x
(when x
is a dataset, that
means the root, top-level folder). path
may also be a Folder
object.
x
, with the folder at path
guaranteed to be created, and for
mv
, containing what
moved into it.
The functions have some differences from the strict behavior of their Unix
ancestors. For one, they work recursively, without additional arguments:
mkdir
will make every directory necessary to construct the requested path,
even if all parent directories didn't already exist; and mv
doesn't
require that the directory to move to already exist---it will effectively
call mkdir
along the way.
cd()
to select a folder by path; rmdir()
to delete a folder;
folder()
to identify and set an object's parent folder;
base::dir.create()
if you literally want to create a directory in your local file system, which
mkdir()
does not do
if (FALSE) {
ds <- loadDataset("Example survey")
ds <- mv(ds, c("gender", "age", "educ"), "Demographics")
ds <- mkdir(ds, "Key Performance Indicators/Brand X")
# These can also be chained together
require(magrittr)
ds <- ds %>%
mv(c("aware_x", "nps_x"), "Key Performance Indicators/Brand X") %>%
mv(c("aware_y", "nps_y"), "Key Performance Indicators/Brand Y")
# Can combine with cd() and move things with relative paths
ds %>%
cd("Key Performance Indicators/Brand X") %>%
mv("nps_x", "../Net Promoters")
# Can combine with folder() to move objects to the same place as something else
ds %>% mv("nps_y", folder(ds$nps_x))
# Now let's put ds in a Project
projects() %>%
mv(ds, "Brand Tracking Studies")
}