#' @export
atSeaLandingsLinker <- function(atSea,logsa,comGrid,comLand,year=2016,lfa='31B',females.only=T) {
links = lobster.db('atSea.logbook.link')
Fish.Date = lobster.db('season.dates')
atSea = subset(atSea, SYEAR ==year & LFA == lfa)
h <- subset(Fish.Date,LFA==lfa & SYEAR == year)
tr = unique(atSea$TRIPNO)
links = subset(links, TRIPNO %in% tr)
atSea$I <- ifelse(atSea$SPECIESCODE==2550,1,0)
atSea = rename.df(atSea,'GRIDNO','GRID_NUM')
a = aggregate(CARLENGTH~TRIPNO+GRID_NUM+SYEAR,na.action=NULL,data=atSea,FUN=length)
trt = aggregate(TRAPNO~TRIPNO+LFA+GRID_NUM+SYEAR, data=atSea ,na.action=NULL, FUN= function(x)length (unique(x)))
trt = rename.df(trt,'TRAPNO','TrapsSampled')
nLTr = aggregate(TRAPNO~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550),na.action=NULL, FUN= function(x)length (unique(x)))
nLTr = rename.df(nLTr,'TRAPNO','TrapsSampledwLobster')
nL = aggregate(I~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550) ,na.action=NULL, FUN= sum)
nL = rename.df(nL ,'I','NLobster')
nLf = aggregate(I~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550 & SEX==2) ,na.action=NULL, FUN= sum)
nLf = rename.df(nLf ,'I','NFemaleLobster')
nLm = aggregate(I~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550 & SEX==1) ,na.action=NULL, FUN= sum)
nLm = rename.df(nLm ,'I','NMaleLobster')
nLb = try(aggregate(I~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550 & SEX==3) ,na.action=NULL, FUN= sum),silent=T)
if(!is.null(nrow(nLb))) {nLb = rename.df(nLb ,'I','NBerriedLobster')} else {nLb = trt[,c('TRIPNO','GRID_NUM','LFA','SYEAR')]; nLb$NBerriedLobster = 0}
nLc = try(aggregate(I~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550 & CULL>0) ,na.action=NULL, FUN= length),silent=T)
if(!is.null(nrow(nLc))) {nLc = rename.df(nLc ,'I','NCullLobster')} else {nLc = trt[,c('TRIPNO','GRID_NUM','LFA','SYEAR')]; nLc$NCullLobster = 0}
nLv = try(aggregate(I~TRIPNO+LFA+GRID_NUM+SYEAR, data=subset(atSea,SPECIESCODE==2550 & VNOTCH>0) ,na.action=NULL, FUN= length),silent=T)
if(!is.null(nrow(nLv))) {nLv = rename.df(nLv ,'I','NVnotchedLobster')} else {nLv = trt[,c('TRIPNO','GRID_NUM','LFA','SYEAR')]; nLv$NVnotchedLobster = 0}
trSum = Reduce(function(...) merge(...,all=T),list(trt,nLTr,nL,nLm,nLf,nLb,nLc,nLv))
trSum = na.zero(trSum)
aS = subset(atSea,SPECIESCODE==2550)
if(females.only) aS = subset(aS,SEX %in% c(2,3))
aS$ids = paste(aS$TRIPNO, aS$LFA, aS$GRID_NUM,aS$WOS, aS$SYEAR,aS$PORT,sep="-")
i = which(aS$CARLENGTH>=250)
if(length(i) >0) aS = aS[-i,]
IDs = unique(aS$ids)
aS = subset(aS,CARLENGTH %in% 30:250)
breaks = seq(30,250,1)
CLF = list()
for(i in 1:length(IDs)){
CLF[[i]]<-with(subset(aS,ids==IDs[i]), {
g = c(IDs[i],hist(CARLENGTH,breaks = breaks,plot=F)$counts)
return(g)
})
}
CLF = as.data.frame(do.call(rbind,CLF))
names(CLF) <- c('ids',breaks[-1])
CLF = toNums(CLF,2:ncol(CLF))
CLF = cbind(do.call(rbind,strsplit(CLF$ids,"-")),CLF)
names(CLF)[1:6] = c('TRIPNO','LFA','GRID_NUM','WOS','SYEAR','PORT')
aCC = CLF = merge(CLF,trSum)
#using landings by port or by stat dist
PO = unique(CLF$PORT)
PL = subset(comLand, PORT %in% PO)
browser()
if(nrow(PL)==0) {
PC = substr(PO,2,3)
comLand$SD = substr(comLand$PORT,2,3)
PL = subset(comLand, SD %in% PC)
PL = aggregate(WEIGHT_KG~WOS+SD,data=PL,FUN=sum)
D = sum(PL$WEIGHT_KG)
CLF$SD = substr(CLF$PORT,2,3)
}
##need to finish this AMC Dec 1, 2017
#using logbook linker
if(year>2001){
logsa3 = aggregate(cbind(WEIGHT_KG,NUM_OF_TRAPS)~GRID_NUM+SD_LOG_ID+SYEAR+BUMPUP+LFA,data=subset(logsa,LFA==lfa & SYEAR %in% year),na.action=NULL, FUN=sum)
aa =merge(logsa3,links,by.x='SD_LOG_ID',by.y = 'SD_LOG_ID_DO')
aCC = merge(CLF,aa,by=c('TRIPNO','GRID_NUM','LFA','SYEAR'),all.x=T)
i = which(is.na(aCC$WEIGHT_KG))
aC = aCC[i,]
aCC = aCC[-i,]
aCk = unique(aCC$TRIPNO)
#split the landings if two grids are sampled but only one log book evident
if(any(aC$TRIPNO %in% aCk)){
ik = which(aC$TRIPNO %in% aCk)
for(j in 1:length(ik)) {
#if(j==14) browser()
uu = which(aCC$TRIPNO==aC$TRIPNO[ik[j]])
ww = which(aC$TRIPNO==aC$TRIPNO[ik[j]])
if(length(uu)>1) uu = uu[1]
for(d in 1:length(ww)){
w = aC[ww[d],]
u = aCC[uu,]
x = w$TrapsSampled / (w$TrapsSampled+u$TrapsSampled) #EFFORT proration
w$SD_LOG_ID = u$SD_LOG_ID
w$WOS = u$WOS
w$BUMPUP = u$BUMPUP
w$WEIGHT_KG = u$WEIGHT_KG * x
u$WEIGHT_KG = u$WEIGHT_KG - w$WEIGHT_KG
w$NUM_OF_TRAPS = round(u$NUM_OF_TRAPS*x)
u$NUM_OF_TRAPS = u$NUM_OF_TRAPS - w$NUM_OF_TRAPS
w$SD_LOG_ID_DB = u$SD_LOG_ID_DB
w$SD_LOG_ID_DA = u$SD_LOG_ID_DA
aC[ww[d],] <- w
aCC[uu,] <- u
}
}
}
aCC = rbind(aCC,aC)
if(any(aCC$TRIPNO %in% aa$TRIPNO)){
uo1 = which(is.na(aCC$WEIGHT_KG))
if(length(uo1)>1){
uo = aCC[uo1,]
aCC = aCC[-uo1,]
tr = unique(uo$TRIPNO)
if(any(aa$TRIPNO %in% tr)) {
io = which(uo$TRIPNO %in% aa$TRIPNO)
iou = uo[io,]
iou = within(iou,{SD_LOG_ID = BUMPUP= WEIGHT_KG= NUM_OF_TRAPS= SD_LOG_ID_DB= SD_LOG_ID_DA =NULL})
if(all(is.na(aa$GRID_NUM))) {
aa$GRID_NUM = NULL
} else {
iou$GRID_NUM = NULL
}
aW = merge(iou,aa,by=c('TRIPNO','LFA','SYEAR'),all.x=T)
uo = uo[-io,]
aCC = rbind(aCC,aW)
aCC = rbind(aCC,uo)
} else {
aCC = rbind(aCC,uo)
}
#try logbooks from day before
aa =merge(logsa3,links,by.x='SD_LOG_ID',by.y = 'SD_LOG_ID_DB')
tr = unique(uo$TRIPNO)
if(any(aa$TRIPNO %in% tr)) {
io = which(uo$TRIPNO %in% aa$TRIPNO)
iou = uo[io,]
iou = within(iou,{SD_LOG_ID = BUMPUP= WEIGHT_KG= NUM_OF_TRAPS= SD_LOG_ID_DB= SD_LOG_ID_DA=NULL})
aW = merge(iou,aa,by=c('TRIPNO','LFA','GRID_NUM','SYEAR'),all.x=T)
i = which(is.na(aW$WEIGHT_KG))
aC = aW[i,]
aWW = aW[-i,]
aCk = unique(aWW$TRIPNO)
#split the landings if two grids are sampled but only one log book evident
if(any(aC$TRIPNO %in% aCk)){
ik = which(aC$TRIPNO %in% aCk)
for(j in 1:length(ik)) {
uu = which(aWW$TRIPNO==aC$TRIPNO[ik[j]])
ww = which(aC$TRIPNO==aC$TRIPNO[ik[j]])
if(length(uu)>1) uu = uu[1]
for(d in 1:length(ww)){
w = aC[ww[d],]
u = aWW[uu,]
x = w$TrapsSampled / (w$TrapsSampled+u$TrapsSampled) #EFFORT proration
w$SD_LOG_ID = u$SD_LOG_ID
w$WOS = u$WOS
w$BUMPUP = u$BUMPUP
w$WEIGHT_KG = u$WEIGHT_KG * x
u$WEIGHT_KG = u$WEIGHT_KG - w$WEIGHT_KG
w$NUM_OF_TRAPS = round(u$NUM_OF_TRAPS*x)
u$NUM_OF_TRAPS = u$NUM_OF_TRAPS - w$NUM_OF_TRAPS
w$SD_LOG_ID_DB = u$SD_LOG_ID_DB
w$SD_LOG_ID_DA = u$SD_LOG_ID_DA
aC[ww[d],] <- w
aWW[uu,] <- u
}
}
}
aWW = rename.df(aWW,'SD_LOG_ID_DO','SD_LOG_ID_DB')
aW = rename.df(aW,'SD_LOG_ID_DO','SD_LOG_ID_DB')
aCC = rbind(aCC,aWW)
aCC = rbind(aCC,aW)
uo1 = which(is.na(aCC$WEIGHT_KG))
uo = aCC[uo1,]
aCC = aCC[-uo1,]
tr = unique(uo$TRIPNO)
if(any(aa$TRIPNO %in% tr)) {
io = which(uo$TRIPNO %in% aa$TRIPNO)
iou = uo[io,]
iou = within(iou,{SD_LOG_ID = BUMPUP= WEIGHT_KG= NUM_OF_TRAPS= SD_LOG_ID_DB= SD_LOG_ID_DA = GRID_NUM=NULL})
aW = merge(iou,aa,by=c('TRIPNO','LFA','SYEAR'),all.x=T)
aW = rename.df(aW,'SD_LOG_ID_DO','SD_LOG_ID_DB')
uo = uo[-io,]
}
aCC = rbind(aCC,aW)
}
}
}
}
return(aCC)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.