I want to generate the attached crosstab with R. Presently I used SPSS. The data frame that I used is below. variables (Maths_Set, Note_Book, School_Bag, Text_Book, Pen ) is a muliple response question in a survey, where respondent can have 1 or more of the items. if 1 is coded, it means the respondent has the item otherwise it's coded 0. The crosstab is taking Q1 as a row and Gender and the grouping of items as a column. And it generates both count and percentage in a single cell.
Q1 <- c(5,5,4,1,5,4,3,3,5,2)
Gender <- c(2,2,2,1,2,2,1,2,1,2)
Maths_Set <- c(1,0,1,1,1,1,1,1,0,1)
Note_Book <- c(1,1,0,1,1,1,1,1,1,1)
School_Bag <- c(0,1,1,0,1,1,1,1,1,1)
Text_Book <- c(0,1,0,1,1,1,1,1,1,1)
Pen <- c(0,0,1,1,1,1,1,1,1,1)
df = data.frame(Q1,Gender,Maths_Set,Note_Book,School_Bag,Text_Book,Pen)
df$Q1 <- factor(df$Q1, levels= c(1,2,3,4,5), labels = c("Strongly Dislike", "Dislike", "Neither like or Dislike", "Like", "Strongly Like"))
df$Gender <- factor(df$Gender, levels = c(1,2), labels = c("Boy", "Girl"))

You can use gt for formatting and dplyr for the aggregation:
This is just to get you started with
gt. There are plenty of customization options and feel free to explore them to customize the table to your liking.