suppressWarnings({
  suppressPackageStartupMessages({
    library(dplyr)
    library(knitr)
  })
})

remove_repeats= function(x, cols){
  remove_rep= function(df, this_col){
    this_vec= as.character(unlist(df[,this_col]))
    df[,this_col]= unlist(lapply(seq(length(rle(this_vec)$values)), 
                                 function(x) c(rle(this_vec)$values[x], 
                                               rep("", rle(this_vec)$lengths[x]-1))))
    df
  }
  for(c in cols){
    x= remove_rep(x, c)
  }
  x
}


df= as.data.frame(Titanic)  %>%
  arrange(Class, Sex, Age, Survived) %>%
  select(Class, Sex, Age, Survived, Freq)
df= remove_repeats(df, c("Class", "Sex", "Age", "Survived"))

kable(df)
Class Sex Age Survived Freq
1st Male Child No 0
Yes 5
Adult No 118
Yes 57
Female Child No 0
Yes 1
Adult No 4
Yes 140
2nd Male Child No 0
Yes 11
Adult No 154
Yes 14
Female Child No 0
Yes 13
Adult No 13
Yes 80
3rd Male Child No 35
Yes 13
Adult No 387
Yes 75
Female Child No 17
Yes 14
Adult No 89
Yes 76
Crew Male Child No 0
Yes 0
Adult No 670
Yes 192
Female Child No 0
Yes 0
Adult No 3
Yes 20