Atribua ID exclusivo a valores distintos dentro do Grupo com dplyr

Problema: preciso criar um campo de ID exclusivo para dados que possuam dois níveis de agrupamento. No código de exemplo aqui, éEmp eColor. O ID precisa ser estruturado como:

Emp + número único de cadaColor + número sequencial para duplicadoColors.

Esses valores são separados por pontos.
Dados de exemplo:

dat <- data.frame(Emp = c("A","A","A","B","B","C"), 
              Color = c("Red","Green","Green","Orange","Yellow","Brown"),
              stringsAsFactors = FALSE)

O ID deve aparecer assim:

ID <- c("A.01.001", "A.02.001", "A.02.002", "B.01.001", "B.02.001", "C.01.001")

ID [1] "A.01.001" "A.02.001" "A.02.002" "B.01.001" "B.02.001" "C.01.001"

O sufixo de três caracteres no ID para registrar as duplicatas pode ser feito da seguinte maneira:

 group_by(dat, Emp, Color) %>%
         mutate(suffix = str_pad(row_number(), width=3, side="left", pad="0"))

Mas não consigo atribuir números sequenciais à ocorrência única deColor com cadaEmp grupo.

Eu prefiro uma solução dplyr, mas qualquer método seria apreciado.

questionAnswers(2)

yourAnswerToTheQuestion