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.