# Calibrating C14 dates

April 12, 2017
By

[This article was first published on R – The Past by Numbers, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

C14 sampling is the most popular technique that archaeologists use to estimate absolute dates of sites. The method uses an organic sample to measure radiocarbon age that finally needs to be calibrated to calendar years (see the Wikipedia entry for details).

I have always been puzzled that C14 samples are typically calibrated using specialized proprietary software. I don’t usually work with C14 but I was curious to see if you can calibrate samples using R (the language I used for everyday statistical stuff). The answer is that someone already created a package for this (surprise, surprise). It is called bchron and was developed by Andrew Parnell.

### Install and load the library

```install.packages("Bchron")
library(Bchron)
```

You will need a data frame with at least 2 columns: a) age and b) standard deviation. I used data from the amazing Maes Howe cairn in Orkney islands collected from the Scottish Radiocarbon Database in Canmore.

```c14 <- read.csv("https://git.io/vS0mY")
```

### Calibrate!

Bchron provides a function called BchronCalibrate receiving 4 parameters:

1. age
2. deviation
3. curve
4. sample Id optional

You can calibrate a single date:

```singleResult <- BchronCalibrate(3765, 70, "intcal13", "Q-1481")
plot(singleResult)
```

The cool thing here is that you can also pass a list of values to each parameter instead of a single value. If you do this then you will calibrate all dates at the same time:

```results <- BchronCalibrate(c14\$age, c14\$ageSd, rep("intcal13", nrow(c14)), c14\$labId)
```

As you can see in this code block we are pass the columns age and ageSd as the first 2 parameters. The third parameter is a list of "intcal13" as long as our sample size (so you are saying that each sample will be calibrated using the "intcal13" curve). We use the column labId as the last argument to help us identify each sample.

So…that's it! You can cycle through the calibrated samples with:

```plot(results,pause=T)
```

You can also export the calibrated samples to a pdf document:

```pdf("calibrated.pdf")
plot(results)
dev.off()
```

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.