Load Packages

require(curl)
require(jsonlite)
require(rgdal)
require(plyr)
require(DT)

Load Data

ramphs <-read.csv(curl("https://gist.githubusercontent.com/sfsheath/5c5987269e8aad412416/raw/a12dda2b8a681f1ab01421f68ac237ab591ff0f9/roman-amphitheaters.csv"))
periods <- fromJSON("https://gist.githubusercontent.com/sfsheath/cc082cc6db3ac8343e3a/raw/6e938ed37b9083f393a67bec10b46ba7fc693661/amphitheater-chronogrps.json")

Join Data

ramphs.sp <- ramphs
join(ramphs.sp, periods, by= "chronogrp") -> ramphs.joined
coordinates(ramphs.joined) <- ~longitude + latitude

Calculate Values

ramphs.noise <- ramphs.joined
x <- length(ramphs.noise$start_date[ramphs.noise$chronogrp=="Imperial"])
tmp.min <- min(ramphs.noise$start_date[ramphs.noise$chronogrp=="Imperial"])
tmp.max <- max(ramphs.noise$end_date[ramphs.noise$chronogrp=="Imperial"])

Replace Values

ramphs.noise$start_date[ramphs.noise$chronogrp=="Imperial"] <- runif(x, min=tmp.min, max=tmp.max)
round(ramphs.noise$start_date, digits=0) -> ramphs.noise$start_date

Write JSON

#ramphs.noise[c("label", "start_date", "end_date")] -> ramphs.noise.date
#writeOGR(ramphs.noise.date, "noisedatetest", layer="test", driver="GeoJSON")

Plot

plot(ramphs.noise)

Data Table

datatable(ramphs)

Source

[Ramphs data source] (https://gist.github.com/sfsheath/5c5987269e8aad412416)