Define file with group and individual ID data

############
# add file name including path
file.name <- "~/Downloads/Combinaciones grupos.xlsx"
replications <- 10000
#############

fi <- file.info(file.name)
  • The name of the data file is “Combinaciones grupos.xlsx” which is found in “/home/m/Downloads”

  • The file was modified on 2021-01-18 at 11:16



Data supplied:

Must have three columns: “Grupo”, “ID” and “Sexo”

df <- read_excel(file.name, col_types = c("text", "text", "text"))

df <- df[order(df$Grupo), ]

df$ID <- gsub(" ", "_", df$ID)

kb <-  kbl(df)  

kable_styling(kb, bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Grupo ID Sexo
G1 982126051278491 h
G1 900200000279422 h
G4 982126058484339 h
G4 982126058484326 h
G4 900200000279820 m
G4 982126051278475 h
GP2 982126057846239 m
GP2 982126057846174 h
GP2 982126057846203 m
GP2 982126057846216 m
MAP22 982126057846162 m
MAP22 982126057846172 h
MAP22 982126057846201 h
MAP22 982126057846242 m
S9 900200000206430 h
S9 982126957845238 m
S9 982126058844330 m
S9 982126058484318 m
S9 982126052945921 h
S9 982126051278540 h
  • Contains data for 5 groups and 20 individuals


Colors for individuals order by original groups

df_col <- df_col[order(df_col$Grupo), ]

kb <-  kbl(df_col[, c("Grupo", "ID", "Sexo", "Color", "Grupo_mixto")], row.names = FALSE)  

kb <- column_spec(kb, 4, color = "black",
              background = df_col$cols)

kable_styling(kb, bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Grupo ID Sexo Color Grupo_mixto
G1 900200000279422 h Sin pintar 1
G1 982126051278491 h Verde 2
G4 982126058484326 h Amarillo 3
G4 982126058484339 h Rosado 1
G4 982126051278475 h Sin pintar 4
G4 900200000279820 m Naranja 2
GP2 982126057846174 h Rosado 4
GP2 982126057846203 m Verde 3
GP2 982126057846216 m Sin pintar 2
GP2 982126057846239 m Naranja 1
MAP22 982126057846172 h Naranja 3
MAP22 982126057846201 h Amarillo 2
MAP22 982126057846162 m Verde 1
MAP22 982126057846242 m Sin pintar 4
S9 900200000206430 h Naranja 4
S9 982126051278540 h DOS COLORES 2
S9 982126052945921 h Sin pintar 3
S9 982126957845238 m Amarillo 1
S9 982126058484318 m No asignado
S9 982126058844330 m Verde 5

Number of individuals by mixed group

cnt_mg <- as.data.frame(table(df_col$Grupo_mixto))

names(cnt_mg) <- c("Grupo_mixto", "Numero de individuos")


kb <-  kbl(cnt_mg, row.names = FALSE,)  

kable_styling(kb, bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = FALSE)
Grupo_mixto Numero de individuos
1 5
2 5
3 4
4 4
5 1
No asignado 1

Colors for individuals order by mixed groups

df_col <- df_col[order(df_col$Grupo_mixto), ]

df_col_l <- lapply(unique(df_col$Grupo_mixto), function(x){
  
  X <- df_col[df_col$Grupo_mixto == x, ]
  X$Comentarios <- ""
  X$Comentarios[X$Color == "Sin pintar" & duplicated(X$Color)] <- "Debe ser coloreado"
    
  return(X)
})

df_col <- do.call(rbind, df_col_l)

kb <-  kbl(df_col[, c("Grupo_mixto", "ID", "Sexo", "Color", "Comentarios")], row.names = FALSE)  

kb <- column_spec(kb, 4, color = "black",
              background = df_col$cols)

kable_styling(kb, bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Grupo_mixto ID Sexo Color Comentarios
1 900200000279422 h Sin pintar
1 982126058484339 h Rosado
1 982126057846239 m Naranja
1 982126057846162 m Verde
1 982126957845238 m Amarillo
2 982126051278491 h Verde
2 900200000279820 m Naranja
2 982126057846216 m Sin pintar
2 982126057846201 h Amarillo
2 982126051278540 h DOS COLORES
3 982126058484326 h Amarillo
3 982126057846203 m Verde
3 982126057846172 h Naranja
3 982126052945921 h Sin pintar
4 982126051278475 h Sin pintar
4 982126057846174 h Rosado
4 982126057846242 m Sin pintar Debe ser coloreado
4 900200000206430 h Naranja
5 982126058844330 m Verde
No asignado 982126058484318 m

Notas

  • Algoritmo de busqueda fue corrido por 10000 iteraciones

  • Al menos un individuo sin color debe ser pintado cuando se creen los grupos mixtos

  • Hay 1 individuo(s) que no fue(ron) asignado(s) a ningun grupo mixto