CRSPPeerA = dataset;
[eventtmp, ~, CRSPPeerAraw.EventID] = unique( [CRSPPeerAraw.PERMNO CRSPPeerAraw.event_date],'rows');
CRSPPeerA.PERMNO = eventtmp(:,1);
CRSPPeerA.event_date = eventtmp(:,2);
CRSPPeerA.EventID = (1:length(CRSPPeerA.PERMNO))';
CRSPPeerA.RET=NaN(length(CRSPPeerA.EventID),331);
CRSPPeerA.vwretd=NaN(length(CRSPPeerA.EventID),331);

tic
for id = 1:length(CRSPPeerA.EventID)
    crspraw = CRSPPeerAraw(CRSPPeerAraw.EventID==id,:);
    CRSPPeerA.RET(id,:)    = (vlookup( (-300:30)', crspraw.TradingDaysRelativetoEven, crspraw.Returns))';
    CRSPPeerA.vwretd(id,:)    = (vlookup( (-300:30)', crspraw.TradingDaysRelativetoEven, crspraw.ValueWeightedReturnincldi))';
    id / length(CRSPPeerA.EventID)
end
toc