R: primeira observação por grupo usando data.table e self-join

Eu estou tentando obter a linha superior por um grupo de três variáveis ​​usando um data.table.

Eu tenho uma solução de trabalho:

col1 <- c(1,1,1,1,2,2,2,2,3,3,3,3)
col2 <- c(2000,2000,2001,2001,2000,2000,2001,2001,2000,2000,2001,2001)
col4 <- c(1,2,3,4,5,6,7,8,9,10,11,12)
data <- data.frame(store=col1,year=col2,month=12,sales=col4)

solution1 <- data.table(data)[,.SD[1,],by="store,year,month"]

Eu usei a abordagem mais lenta sugerida por Matthew Dowle no seguinte link:

https://stats.stackexchange.com/questions/7884/fast-ways-in-r-get-the-first-row-of-a-data-frame-grouped-by-an -identifier

Estou tentando implementar a auto-junção mais rápida, mas não consigo fazê-la funcionar.

Alguém tem alguma sugestão?

questionAnswers(2)

yourAnswerToTheQuestion