Original code works now.
Here it is in full
library(foreign)
library(data.table)
file <- 'DownstreamSites.dbf' # ds_fish dbf
ds_fish <- read.dbf(file, as.is = FALSE)
file <- 'UpstreamSites.dbf' # nearest_us_fish dbf
us_fish <- read.dbf(file, as.is = FALSE)
file <- 'barriers.dbf' # barriers dbf
barriers <- read.dbf(file, as.is = FALSE)
file <- 'metrics.dbf' # barriers dbf
metrics <- read.dbf(file, as.is = FALSE)
metrics <- metrics[c(-1:-3,-8:-34,-41,-42,-45:-47,-49:-52)]
colnames(metrics)[13] <- "DSSite_ID"
ds_fish1 <- merge(metrics, ds_fish, by = 'DSSite_ID')
colnames(metrics)[13] <- "USSite_ID"
us_fish1 <- merge(metrics, us_fish, by = 'USSite_ID')
year <- format(as.Date(us_fish1$event_date, format="%d/%m/%Y"),"%Y")
us_fish1$year <- year
year <- format(as.Date(ds_fish1$event_date, format="%d/%m/%Y"),"%Y")
ds_fish1$year <- year
ds_fish2 <- data.table(ds_fish1)
us_fish2 <- data.table(us_fish1)
ds_DT <- ds_fish2[ , .SD[which.min(DSSite_Dis)], by = c("SiteID", "year")]
us_DT <- us_fish2[ , .SD[which.min(USSite_Dis)], by = c("SiteID", "year")]