library(mortAAR)
library(magrittr)Data from four neolithic gallery graves in central Germany (Czarnetzki, 1966).
td <- gallery_gravesInspect the data. Show the first ten rows of the data set:
| indnr | sex | age | site |
|---|---|---|---|
| 2 | m | 20-30 | Niedertiefenbach |
| 7 | m | 20-30 | Niedertiefenbach |
| 9 | m | 40-50 | Niedertiefenbach |
| 9t | m | 50-60 | Niedertiefenbach |
| 23 | m | 20-30 | Niedertiefenbach |
| 30 | m | 20-30 | Niedertiefenbach |
| 39 | m | 20-30 | Niedertiefenbach |
| 45 | m | 20-30 | Niedertiefenbach |
| 58 | m | 30-40 | Niedertiefenbach |
| 69 | m | 20-30 | Niedertiefenbach |
Replace: “?” with NA values.
td %>% replace(td == "?", NA) -> td| indnr | sex | age | site |
|---|---|---|---|
| 2 | m | 20-30 | Niedertiefenbach |
| 7 | m | 20-30 | Niedertiefenbach |
| 9 | m | 40-50 | Niedertiefenbach |
| 9t | m | 50-60 | Niedertiefenbach |
| 23 | m | 20-30 | Niedertiefenbach |
| 30 | m | 20-30 | Niedertiefenbach |
| 39 | m | 20-30 | Niedertiefenbach |
| 45 | m | 20-30 | Niedertiefenbach |
| 58 | m | 30-40 | Niedertiefenbach |
| 69 | m | 20-30 | Niedertiefenbach |
Translate “inf_I,” “inf_I” and “juv” into numeric age ranges (Martin, 1928, p. 580).
td <- td %>%
replace(td == "inf_I", "0-6") %>%
replace(td == "inf_II", "7-13") %>%
replace(td == "juv", "14-19")| indnr | sex | age | site |
|---|---|---|---|
| 2 | m | 20-30 | Niedertiefenbach |
| 7 | m | 20-30 | Niedertiefenbach |
| 9 | m | 40-50 | Niedertiefenbach |
| 9t | m | 50-60 | Niedertiefenbach |
| 23 | m | 20-30 | Niedertiefenbach |
| 30 | m | 20-30 | Niedertiefenbach |
| 39 | m | 20-30 | Niedertiefenbach |
| 45 | m | 20-30 | Niedertiefenbach |
| 58 | m | 30-40 | Niedertiefenbach |
| 69 | m | 20-30 | Niedertiefenbach |
Remove rows that do not have age information.
td <- td %>%
dplyr::filter(!is.na(age))| indnr | sex | age | site |
|---|---|---|---|
| 2 | m | 20-30 | Niedertiefenbach |
| 7 | m | 20-30 | Niedertiefenbach |
| 9 | m | 40-50 | Niedertiefenbach |
| 9t | m | 50-60 | Niedertiefenbach |
| 23 | m | 20-30 | Niedertiefenbach |
| 30 | m | 20-30 | Niedertiefenbach |
| 39 | m | 20-30 | Niedertiefenbach |
| 45 | m | 20-30 | Niedertiefenbach |
| 58 | m | 30-40 | Niedertiefenbach |
| 69 | m | 20-30 | Niedertiefenbach |
Make a decision on individual 139 from Niedertiefenbach with age less or equal 60.
td[td$indnr == "139" & td$site == "Niedertiefenbach", ]$age <- "50-60"| indnr | sex | age | site |
|---|---|---|---|
| 2 | m | 20-30 | Niedertiefenbach |
| 7 | m | 20-30 | Niedertiefenbach |
| 9 | m | 40-50 | Niedertiefenbach |
| 9t | m | 50-60 | Niedertiefenbach |
| 23 | m | 20-30 | Niedertiefenbach |
| 30 | m | 20-30 | Niedertiefenbach |
| 39 | m | 20-30 | Niedertiefenbach |
| 45 | m | 20-30 | Niedertiefenbach |
| 58 | m | 30-40 | Niedertiefenbach |
| 69 | m | 20-30 | Niedertiefenbach |
Separate the age range column.
td <- td %>%
tidyr::separate(age, c("from", "to"))## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 1 rows [35].
| indnr | sex | from | to | site |
|---|---|---|---|---|
| 2 | m | 20 | 30 | Niedertiefenbach |
| 7 | m | 20 | 30 | Niedertiefenbach |
| 9 | m | 40 | 50 | Niedertiefenbach |
| 9t | m | 50 | 60 | Niedertiefenbach |
| 23 | m | 20 | 30 | Niedertiefenbach |
| 30 | m | 20 | 30 | Niedertiefenbach |
| 39 | m | 20 | 30 | Niedertiefenbach |
| 45 | m | 20 | 30 | Niedertiefenbach |
| 58 | m | 30 | 40 | Niedertiefenbach |
| 69 | m | 20 | 30 | Niedertiefenbach |
Adjust variable types.
td <- td %>%
transform(
from = as.numeric(from),
to = as.numeric(to)
)Control the flow of the analysis by exemplifying what the different variables of the input data stand for.
# tdlist <- td %>%
# plyr::dlply("site", identity)
td_prepared <- prep.life.table(
td,
dec = NA,
agebeg = "from",
ageend = "to",
group = "site",
method = "Standard",
agerange = "included"
)td_result <- td_prepared %>%
life.table()td_result %>% plot(display = c("qx", "dx", "lx"))## Warning: Removed 1 row(s) containing missing values (geom_path).
td_result %>% plot(display = c("ex", "rel_popx"))## Warning: Removed 1 row(s) containing missing values (geom_path).