It may not be exactly what you mean by "tree structure", but it gives you the numbers in the table using the R base. It should be easy to format as you like from this result.
df=structure(list(combi = structure(c(24L, 8L, 3L, 19L, 4L, 23L, 15L, 12L, 14L, 22L, 5L, 13L, 18L, 9L, 2L, 25L, 11L, 7L, 21L, 10L, 6L, 17L, 20L, 16L), .Label = c("", "c1-c2-f1-f2", "c1-c2-f2-f1", "c1-f1-c2-f2", "c1-f1-f2-c2", "c1-f2-c2-f1", "c1-f2-f1-c2", "c2-c1-f1-f2", "c2-c1-f2-f1", "c2-f1-c1-f2", "c2-f1-f2-c1", "c2-f2-c1-f1", "c2-f2-f1-c1", "f1-c1-c2-f2", "f1-c1-f2-c2", "f1-c2-c1-f2", "f1-c2-f2-c1", "f1-f2-c1-c2", "f1-f2-c2-c1", "f2-c1-c2-f1", "f2-c1-f1-c2", "f2-c2-c1-f1", "f2-c2-f1-c1", "f2-f1-c1-c2", "f2-f1-c2-c1"), class = "factor"), nb = c(10L, 0L, 2L, 4L, 1L, 5L, 1L, 2L, 1L, 3L, 1L, 0L, 3L, 5L, 0L, 18L, 5L, 2L, 5L, 0L, 4L, 4L, 11L, 2L)), .Names = c("combi", "nb"), class = "data.frame", row.names = c(1L, 3L, 5L, 7L, 9L, 11L, 13L, 15L, 17L, 19L, 21L, 23L, 25L, 27L, 29L, 31L, 33L, 35L, 37L, 39L, 41L, 43L, 45L, 47L)) tmp <- sapply(as.character(df$combi), strsplit, split = "-") tmp <- do.call(rbind, tmp) colnames(tmp) <- paste0("str", 1:4) rownames(tmp) <- NULL tmp <- data.frame(df, tmp) tmp$str3 <- paste(tmp$str3, tmp$str4, sep = "-") str1 <- aggregate(list(nb_str1 = tmp[,"nb"]), tmp["str1"], sum) str2 <- aggregate(list(nb_str2 = tmp[,"nb"]), tmp[c("str1", "str2")], sum) str3 <- aggregate(list(nb_str3 = tmp[,"nb"]), tmp[c("str1", "str2", "str3")], sum) tmp <- merge(str3, str1) tmp <- merge(tmp, str2) tmp <- tmp[, c("str1", "nb_str1", "str2", "nb_str2", "str3", "nb_str3")] tmp #> str1 nb_str1 str2 nb_str2 str3 nb_str3 #> 1 c1 10 c2 2 f1-f2 0 #> 2 c1 10 c2 2 f2-f1 2 #> 3 c1 10 f1 2 c2-f2 1 #> 4 c1 10 f1 2 f2-c2 1 #> 5 c1 10 f2 6 c2-f1 4 #> 6 c1 10 f2 6 f1-c2 2 #> 7 c2 12 c1 5 f1-f2 0 #> 8 c2 12 c1 5 f2-f1 5 #> 9 c2 12 f1 5 c1-f2 0 #> 10 c2 12 f1 5 f2-c1 5 #> 11 c2 12 f2 2 c1-f1 2 #> 12 c2 12 f2 2 f1-c1 0 #> 13 f1 15 c1 2 c2-f2 1 #> 14 f1 15 c1 2 f2-c2 1 #> 15 f1 15 c2 6 c1-f2 2 #> 16 f1 15 c2 6 f2-c1 4 #> 17 f1 15 f2 7 c1-c2 3 #> 18 f1 15 f2 7 c2-c1 4 #> 19 f2 52 c1 16 c2-f1 11 #> 20 f2 52 c1 16 f1-c2 5 #> 21 f2 52 c2 8 c1-f1 3 #> 22 f2 52 c2 8 f1-c1 5 #> 23 f2 52 f1 28 c1-c2 10 #> 24 f2 52 f1 28 c2-c1 18
Created 2018-03-15 reprex package (v0.2.0).