Skip to contents

A function to calculate the temporal range of fossil taxa from occurrence data.


  name = "genus",
  min_ma = "min_ma",
  max_ma = "max_ma",
  by = "FAD",
  plot = FALSE



dataframe. A dataframe of fossil occurrences containing at least three columns: names of taxa, maximum age and minimum age (see name, min_ma, and max_ma arguments). These ages should constrain the age range of the fossil occurrence and are assumed to be in millions of years before present.


character. The name of the column you wish to be treated as the input names, e.g. "genus" (default).


character. The name of the column you wish to be treated as the minimum limit of the age range, e.g. "min_ma" (default).


character. The name of the column you wish to be treated as the maximum limit of the age range, e.g. "max_ma" (default).


character. How should the output be sorted? Either: "FAD" (first-appearance date; default), "LAD" (last-appearance data), or "name" (alphabetically by taxon names).


logical. Should a plot of the ranges be generated?


A dataframe containing the following columns: unique taxa (taxon), taxon ID (taxon_id), first appearance of taxon (max_ma), last appearance of taxon (min_ma), duration of temporal range (range_myr), and number of occurrences per taxon (n_occ) is returned.


The temporal range(s) of taxa are calculated by extracting all unique taxa (name column) from the input occdf, and checking their first and last appearance. The temporal duration of each taxon is also calculated. A plot of the temporal range of each taxon is also returned if plot = TRUE. If the input data columns contain NAs, these should be removed prior to function call.

Note: this function provides output based solely on the user input data. The true duration of a taxon is likely confounded by uncertainty in dating occurrences, and incomplete sampling and preservation.


Lewis A. Jones


Bethany Allen & Christopher D. Dean


# Grab internal data
occdf <- tetrapods
# Remove NAs
occdf <- subset(occdf, ! & order != "NO_ORDER_SPECIFIED")
# Temporal range
ex <- tax_range_time(occdf = occdf, name = "order", plot = TRUE)