Boa tarde colegas listeiros, como vão?

Tenho um problema e estou com certa dificuldade em resolver de forma prática. Meu conjunto de dados é o seguinte:
local frequencia data quantidade valido
A 2 13/05/2015 500,00 0
A 2 13/05/2015 700,00 1
A 1 13/05/2015 700,00 0
B 3 13/05/2015 400,00 1
C 5 13/05/2015 300,00 0
C 5 10/05/2015 400,00 0
C 5 13/05/2016 400,00 1
C 5 13/05/2015 900,00 1
D 3 13/05/2015 550,00 0
D 4 13/05/2015 500,00 1

Para esse conjunto, gostaria de gerar a coluna 'valida', que me classifica os dados da seguinte maneira: para cada local e para cada ano, retornar apenas o local de maior frequência, mais recente e de maior quantidade (nessa ordem).
Pensei em gerar um objeto para cada local a partir do which(), mas como meu conjunto de dados tem mais de 150 mil linhas e mais de 2000 locais, achei que essa abordagem não seria muito prática nem rápida de ser processada. 

Desde já, agradeço pela colaboração de todos!

Att

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP