Add row_group_label_position = first option
diff --git a/R/collapse_rows.R b/R/collapse_rows.R
index 81c8f97..cb64a8e 100644
--- a/R/collapse_rows.R
+++ b/R/collapse_rows.R
@@ -9,18 +9,21 @@
 #' @param kable_input Output of `knitr::kable()` with `format` specified
 #' @param columns A numeric value or vector indicating in which column(s) rows
 #' need to be collapsed.
-#' @param valign Select from "top", "middle"(default), "bottom". The reason why
+#' @param valign Select from "top", "middle" (default), "bottom". The reason why
 #' "top" is not default is that the multirow package on CRAN win-builder is
 #' not up to date.
+#' Only used when `row_group_label_position` is `identity`.
 #' @param latex_hline Option controlling the behavior of adding hlines to table.
 #' Choose from `full`, `major`, `none`, `custom` and `linespace`.
 #' @param custom_latex_hline Numeric column positions whose collapsed rows will
 #' be separated by hlines.
 #' @param row_group_label_position Option controlling positions of row group
-#' labels. Choose from `identity`, `stack`.
+#' labels. Choose from `identity`, `stack`, or `first` -- the latter behaves
+#' like `identity` when `row_group_label_position` is `top` but without using
+#' the multirow package.
 #' @param row_group_label_fonts A list of arguments that can be supplied to
 #' group_rows function to format the row group label when
-#' `row_group_label_position` is `stack`
+#' `row_group_label_position` is `stack`.
 #' @param headers_to_remove Numeric column positions where headers should be
 #' removed when they are stacked.
 #' @param target If multiple columns are selected to do collapsing and a target
@@ -46,7 +49,7 @@
                           valign = c("middle", "top", "bottom"),
                           latex_hline = c("full", "major", "none", "custom",
                                           "linespace"),
-                          row_group_label_position = c('identity', 'stack'),
+                          row_group_label_position = c("identity", "stack", "first"),
                           custom_latex_hline = NULL,
                           row_group_label_fonts = NULL,
                           headers_to_remove = NULL,
@@ -72,7 +75,7 @@
   if (kable_format == "latex") {
     latex_hline <- match.arg(latex_hline)
     row_group_label_position <- match.arg(row_group_label_position,
-                                          c('identity', 'stack'))
+                                          c("identity", "stack", "first"))
     return(collapse_rows_latex(kable_input, columns, latex_hline, valign,
       row_group_label_position, row_group_label_fonts, custom_latex_hline,
       headers_to_remove, target, col_names, longtable_clean_cut))
@@ -200,6 +203,10 @@
         if(columns[j] < ncol(collapse_matrix) || collapse_matrix_rev[i, j] == 0){
           new_kable_dt[i, columns[j]] <- ''
         }
+      } else if(row_group_label_position == 'first'){
+        if(columns[j] <= ncol(collapse_matrix) && collapse_matrix_rev[i, j] == 0){
+          new_kable_dt[i, columns[j]] <- ''
+        }
       } else {
         new_kable_dt[i, columns[j]] <- collapse_new_dt_item(
           kable_dt[i, columns[j]], collapse_matrix[i, j], column_width,