Asigne una identificación única a valores distintos dentro del grupo con dplyr
Problema: necesito hacer un campo de ID único para los datos que tienen dos niveles de agrupación. En el código de ejemplo aquí, esEmp
yColor
. La identificación debe estructurarse como:
Emp
+ número único de cadaColor
+ número secuencial para duplicadosColors
.
Estos valores están separados por puntos.
Datos de ejemplo:
dat <- data.frame(Emp = c("A","A","A","B","B","C"),
Color = c("Red","Green","Green","Orange","Yellow","Brown"),
stringsAsFactors = FALSE)
Se supone que la identificación debe aparecer así:
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"
El sufijo de tres caracteres para la ID para registrar los duplicados se puede hacer como:
group_by(dat, Emp, Color) %>%
mutate(suffix = str_pad(row_number(), width=3, side="left", pad="0"))
Pero no puedo asignar números secuenciales a la aparición única deColor
con cadaEmp
grupo.
Prefiero una solución dplyr, pero cualquier método sería apreciado.