strata | R Documentation |
The following methods allow the user to quickly change the strata of a genind or genlight object.
strata(x, formula = NULL, combine = TRUE, value) strata(x) <- value nameStrata(x, value) nameStrata(x) <- value splitStrata(x, value, sep = "_") splitStrata(x, sep = "_") <- value addStrata(x, value, name = "NEW") addStrata(x, name = "NEW") <- value
x |
a genind or genlight object |
formula |
a nested formula indicating the order of the population strata. |
combine |
if |
value |
a data frame OR vector OR formula (see details). |
sep |
a |
name |
an optional name argument for use with addStrata if supplying a vector. Defaults to "NEW". |
strata() - Use this function to view or define population stratification of a genind or genlight object.
nameStrata() - View or rename the different levels of strata.
splitStrata() - Split strata that are combined with a common separator. This function should only be used once during a workflow.
Rationale: It is often difficult to import files with several levels of strata as most data formats do not allow unlimited population levels. This is circumvented by collapsing all population strata into a single population factor with a common separator for each observation.
addStrata() - Add levels to your population
strata. This is ideal for adding groups defined by
find.clusters
. You can input a data frame or a vector, but if
you put in a vector, you have the option to name it.
These functions allow the user to seamlessly carry all possible population stratification with their genind or genlight object. Note that there are two ways of performing all methods:
modifying: strata(myData) <- myStrata
preserving:
myNewData <- strata(myData, value = myStrata)
They essentially do
the same thing except that the modifying assignment method (the one with
the "<-
") will modify the object in place whereas the non-assignment
method will preserve the original object (unless you overwrite it). Due to
convention, everything right of the assignment is termed value
. To
avoid confusion, here is a guide to the argument value
for
each function:
strata() value =
a
data.frame
that defines the strata for each individual in the
rows.
nameStrata() value =
a vector
or
a formula
that will define the names.
splitStrata() value =
a formula
argument with
the same number of levels as the strata you wish to split.
addStrata() value =
a vector
or
data.frame
with the same length as the number of individuals
in your data.
The preferred use of these functions is with a formula
object. Specifically, a hierarchical formula argument is used to assign the
levels of the strata. An example of a hierarchical formula would
be:
~Country/City/Neighborhood |
This convention was
chosen as it becomes easier to type and makes intuitive sense when defining
a hierarchy
. Note: it is important to use hiearchical
formulas when specifying hierarchies as other types of formulas (eg.
~Country*City*Neighborhood
) will give incorrect results.
Zhian N. Kamvar
setPop
genind
as.genind
# let's look at the microbov data set: data(microbov) microbov # We see that we have three vectors of different names in the 'other' slot. # ?microbov # These are Country, Breed, and Species names(other(microbov)) # Let's set the strata strata(microbov) <- data.frame(other(microbov)) microbov # And change the names so we know what they are nameStrata(microbov) <- ~Country/Breed/Species ## Not run: # let's see what the strata looks like by Species and Breed: head(strata(microbov, ~Breed/Species)) # If we didn't want the last column combined with the first, we can set # combine = FALSE head(strata(microbov, ~Breed/Species, combine = FALSE)) #### USING splitStrata #### # For the sake of example, we'll imagine that we have imported our data set # with all of the stratifications combined. setPop(microbov) <- ~Country/Breed/Species strata(microbov) <- NULL # This is what our data would look like after import. microbov # To set our strata here, we need to use the functions strata and splitStrata strata(microbov) <- data.frame(x = pop(microbov)) microbov # shows us that we have "one" level of stratification head(strata(microbov)) # all strata are separated by "_" splitStrata(microbov) <- ~Country/Breed/Species microbov # Now we have all of our strata named and split head(strata(microbov)) # all strata are appropriately named and split. ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.