Skip to content

Commit b5a07cc

Browse files
Merge branch 'v1.0.2' into main
2 parents b2428b1 + 0876c23 commit b5a07cc

File tree

5 files changed

+29
-21
lines changed

5 files changed

+29
-21
lines changed

DESCRIPTION

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ Type: Package
33
Title: Customer Intelligence Tool for Rapid Understandable Segmentation
44
Version: 1.0.1
55
Authors@R: c(
6-
person("Dom","Clarke", email = "dom.clarke@peak.ai", role = c("aut", "cre")),
6+
person("Dom","Clarke",email = "dom.clarke@peak.ai", role = c("aut", "cre")),
77
person("Cinzia","Braglia",email = "cinzia.braglia@peak.ai",role = "aut"),
88
person("Oskar","Nummedal",email = "oskar.nummadel@peak.ai",role = "aut"),
99
person("Leo", "McCarthy",email = "leo.mccarthy@peak.ai", role = "aut"),
1010
person("Rebekah", "Yates",email = "rebekah.yates@peak.ai", role = "aut"),
11+
person("Stuart", "Davie",email = "stuart.davie@peak.ai", role = "aut"),
1112
person("Joash","Alonso",role = "aut"),
12-
person("PEAK AI LIMITED", role = "cph")
13+
person("PEAK AI LIMITED",role = "cph")
1314
)
1415
Maintainer: Dom Clarke <dom.clarke@peak.ai>
1516
Copyright: See the file COPYRIGHTS
@@ -22,18 +23,18 @@ Suggests: testthat
2223
Depends:
2324
R (>= 3.5.0)
2425
Imports:
25-
ggplot2,
26-
GGally,
26+
ggplot2 (>= 3.3.0),
27+
GGally (>= 2.0.0),
2728
clustMixType (>= 0.1-16),
28-
treeClust,
29-
rpart,
30-
tibble,
31-
rpart.plot,
32-
rpart.utils,
33-
stringr,
34-
dplyr,
35-
RColorBrewer,
36-
rlang
29+
treeClust (>= 1.1-7),
30+
rpart (>= 4.1-15),
31+
tibble (>= 3.0.0),
32+
rpart.plot (>= 3.0.7),
33+
rpart.utils (>= 0.5),
34+
stringr (>= 1.3.0),
35+
dplyr (>= 1.0.7),
36+
RColorBrewer (>= 1.1-2),
37+
rlang (>= 0.4.9)
3738
Encoding: UTF-8
3839
LazyData: true
3940
RoxygenNote: 7.1.2

R/output_table.R

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ output_table <- function(data, model) {
2929
segmentation_vars <- allcolumnnames[!allcolumnnames %in% c('id', response , 'segment')]
3030
}
3131

32-
df_agg <- df %>% select(c('segment',model$model_hyperparameters$segmentation_variables))
32+
df_agg <- df %>% select(c('segment',model$model_hyperparameters$segmentation_variables))
3333

3434
df_agg_numeric <- df_agg[, unlist(lapply(df_agg, is.numeric)) | names(df_agg) == 'segment'] %>%
3535
group_by(.data$segment) %>%
3636
summarise(across(everything(), ~round(mean(.data$., na.rm = TRUE), 2)))
3737

38-
df_agg_character <- df_agg[, !unlist(lapply(df_agg, is.numeric)) | names(df_agg) == 'segment'] %>%
38+
df_agg_character <- df_agg[, !unlist(lapply(df_agg, is.numeric)) | names(df_agg) == 'segment', drop = FALSE] %>%
3939
group_by(.data$segment) %>%
4040
summarise(across(everything(), ~mode(.data$.)))
4141

@@ -48,11 +48,11 @@ output_table <- function(data, model) {
4848

4949

5050
seg_vars <- model$model_hyperparameters$segmentation_variables
51-
df_agg2_numeric <- df[, (unlist(lapply(df, is.numeric)) & names(df) %in% seg_vars) | names(df) == 'segment'] %>%
51+
df_agg2_numeric <- df[, (unlist(lapply(df, is.numeric)) & names(df) %in% seg_vars) | names(df) == 'segment', drop = FALSE] %>%
5252
group_by(.data$segment) %>%
5353
summarise(across(everything(), ~range_output(.data$.)))
5454

55-
df_agg2_character <- df[, (!unlist(lapply(df, is.numeric)) & names(df) %in% seg_vars) | names(df) == 'segment'] %>%
55+
df_agg2_character <- df[, (!unlist(lapply(df, is.numeric)) & names(df) %in% seg_vars) | names(df) == 'segment', drop = FALSE] %>%
5656
group_by(.data$segment) %>%
5757
summarise(across(everything(), ~top5categories(.data$.)))
5858

@@ -68,16 +68,16 @@ output_table <- function(data, model) {
6868
if(response %in% names(df)) {
6969
df <- df %>%
7070
group_by(.data$segment)%>%
71-
summarise(n = n(), mean_value = mean(as.numeric(as.character(.data$response)),na.rm=TRUE)) %>%
71+
summarise(n = n(), mean_value = mean(as.numeric(as.character(.data[[response]])),na.rm=TRUE)) %>%
7272
mutate(percentage = paste0(100*round((.data$n/sum(.data$n)),3),'%')) %>%
73-
left_join(df_agg, by = 'segment')
73+
left_join(df_agg, by = 'segment')
7474

7575
} else {
7676
df <- df %>%
7777
group_by(.data$segment)%>%
7878
summarise(n = n()) %>%
7979
mutate(mean_value = NULL, percentage = paste0(100*round(.data$n/sum(.data$n),3),'%')) %>%
80-
left_join(df_agg, by = 'segment')
80+
left_join(df_agg, by = 'segment')
8181

8282
}
8383

R/plotting.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ citrus_pair_plot <- function(model,vars = NULL) {
2323
}
2424

2525

26-
26+

R/tree_segment.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#' @importFrom rpart.plot rpart.plot
1313
#' @importFrom rlang .data
1414
#' @param verbose logical whether information about the segmentation procedure should be given.
15+
#' @author Stuart Davie, \email{stuart.davie@@peak.ai}
1516
#' @return List of 4 objects. The rpart object defining the model, a data frame providing high-level segment attributes,
1617
#' a lookup table (data frame) with the id and predicted segment number, and a list of the hyperparameters used.
1718
#' @export
@@ -71,6 +72,7 @@ tree_segment <- function(data, hyperparameters, verbose = TRUE){
7172
#' @importFrom rpart rpart.control rpart prune
7273
#' @importFrom tibble rownames_to_column
7374
#' @importFrom rlang .data
75+
#' @author Stuart Davie, \email{stuart.davie@@peak.ai}
7476
decision_tree_user_defined_leafs.make <- function(df,segmentation_variables,dependent_variable='response',min_segmentation_fraction=0.05,number_of_leafs=6){
7577

7678
minbucket = floor(nrow(df)*min_segmentation_fraction)
@@ -119,6 +121,7 @@ decision_tree_user_defined_leafs.make <- function(df,segmentation_variables,depe
119121
#' @importFrom rpart.utils rpart.rules rpart.subrules.table
120122
#' @importFrom stringr str_split
121123
#' @importFrom rlang .data
124+
#' @author Stuart Davie, \email{stuart.davie@@peak.ai}
122125
tree_table.make <- function(tree, integer_columns){
123126

124127
df1 <- rownames_to_column(tree$frame) %>% arrange(as.numeric(.data$rowname)) %>%
@@ -215,6 +218,7 @@ tree_table.make <- function(tree, integer_columns){
215218
#' @importFrom dplyr mutate row_number arrange bind_cols filter transmute %>%
216219
#' @importFrom rpart.utils rpart.rules
217220
#' @importFrom rlang .data
221+
#' @author Stuart Davie, \email{stuart.davie@@peak.ai}
218222
segment_tree.make <- function(tree){
219223

220224
df1 <- rownames_to_column(tree$frame) %>% mutate(orig_row=row_number()) %>% arrange(as.numeric(.data$rowname)) %>%

man/tree_segment.Rd

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)