Intro

Here’s the report you asked for.

Data Extraction

Data extracted directly from ODK central and cleaned.

form_tables <- ruODK::odata_service_get()
data <- ruODK::odata_submission_get()

data<-
  data%>%
  select(-c(1,3,4:7,130:131))%>%
  pivot_longer(c(2:123),"Questions")%>%
  separate(Questions, into = c("Status","State","group_1","group_2","sub_group_1","sub_group_2","sub_group_3",
                               "sub_group_4","sub_group_5","question"), sep="_")%>%
  mutate(question=NA)%>%
  mutate(question=ifelse(grepl("[Q*]",sub_group_5, ignore.case = T),sub_group_5,question))%>%
  mutate(question=ifelse(grepl("[Q*]",sub_group_4, ignore.case = T),sub_group_4,question))%>%
  mutate(question=ifelse(grepl("[Q*]",sub_group_3, ignore.case = T),sub_group_3,question))%>%
  mutate(question=ifelse(grepl("[Q*]",sub_group_2, ignore.case = T),sub_group_2,question))%>%
  mutate(sub_group_5=ifelse(sub_group_5==question,NA,sub_group_5))%>%
  mutate(sub_group_4=ifelse(sub_group_4==question,NA,sub_group_4))%>%
  mutate(sub_group_3=ifelse(sub_group_3==question,NA,sub_group_3))%>%
  mutate(sub_group_2=ifelse(sub_group_2==question,NA,sub_group_2))%>%
  mutate(sub_group=paste(sub_group_1,sub_group_2,sub_group_3,sub_group_4,sub_group_5), group=paste(group_1,group_2))%>%
  select(c(1,2,14,13,11,12))
data<-
data%>%
  mutate(sub_group=ifelse(grepl("corporate performance", sub_group,fixed=T),"corporate_performance",sub_group))%>%
  mutate(sub_group=ifelse(grepl("strategy roadmap", sub_group,fixed=T),"strategy_roadmap",sub_group))%>%
  mutate(sub_group=ifelse(grepl("investments", sub_group,fixed=T),"investments",sub_group))%>%
  mutate(sub_group=ifelse(grepl("treasury tax management", sub_group,fixed=T),"treasury_tax_management",sub_group))%>%
  mutate(sub_group=ifelse(grepl("budgeting planning forecasting", sub_group,fixed=T),"budgeting_planning_forecasting",sub_group))%>%
  mutate(sub_group=ifelse(grepl("risk management", sub_group,fixed=T),"risk_management",sub_group))%>%
  mutate(sub_group=ifelse(grepl("law regulation compliance", sub_group,fixed=T),"law_regulation_compliance",sub_group))%>%
  mutate(sub_group=ifelse(grepl("leadership change cooperation", sub_group,fixed=T),"leadership_change_cooperation",sub_group))%>%
  mutate(sub_group=ifelse(grepl("readiness to change", sub_group,fixed=T),"readiness_to_change",sub_group))%>%
  mutate(sub_group=ifelse(grepl("organizational culture", sub_group,fixed=T),"organizational_culture",sub_group))%>%
  mutate(sub_group=ifelse(grepl("communication structure abilities", sub_group,fixed=T),"comunication_structure_abilities",sub_group))%>%
  mutate(sub_group=ifelse(grepl("policies procedures", sub_group,fixed=T),"policies_procedures",sub_group))%>%
  mutate(sub_group=ifelse(grepl("roles responsibilities", sub_group,fixed=T),"roles_responsibilities",sub_group))%>%
  mutate(sub_group=ifelse(grepl("process kp", sub_group,fixed=T),"process_KPI",sub_group))%>%
  mutate(sub_group=ifelse(grepl("process flows bottlenecks", sub_group,fixed=T),"process_flow_bottlenecks",sub_group))%>%
  mutate(sub_group=ifelse(grepl("workflow optimization level", sub_group,fixed=T),"workflow_optimization_level",sub_group))%>%
  mutate(sub_group=ifelse(grepl("it infrastructure", sub_group,fixed=T),"it_infrastructure",sub_group))%>%
  mutate(sub_group=ifelse(grepl("system integration matrix", sub_group,fixed=T),"system_integration_matrix",sub_group))%>%
  mutate(sub_group=ifelse(grepl("cloud strategy", sub_group,fixed=T),"cloud_strategy",sub_group))%>%
  mutate(sub_group=ifelse(grepl("system security monitoring", sub_group,fixed=T),"system_security_monitoring",sub_group))%>%
  mutate(sub_group=ifelse(grepl("data governance", sub_group,fixed=T),"data_governance",sub_group))%>%
  mutate(sub_group=ifelse(grepl("data sources", sub_group,fixed=T),"data_sources",sub_group))%>%
  mutate(sub_group=ifelse(grepl("data integration aggregation", sub_group,fixed=T),"data_integration_aggregation",sub_group))%>%
  mutate(sub_group=ifelse(grepl("reporting visualization", sub_group,fixed=T),"reporting_vizualitation",sub_group))%>%
  mutate(sub_group=ifelse(grepl("process standardization automation", sub_group,fixed=T),"process_standardization_automation",sub_group))%>%
  mutate(sub_group=ifelse(grepl("data science capability", sub_group,fixed=T),"data_science_capability",sub_group))%>%
  mutate(group=ifelse(grepl("strategic management", group,fixed=T),"strategic management",group))%>%
  mutate(group=ifelse(grepl("change management", group,fixed=T),"change management",group))%>%
  mutate(group=ifelse(grepl("process management", group,fixed=T),"process management",group))%>%
  mutate(group=ifelse(grepl("technology management", group,fixed=T),"technology management",group))%>%
  mutate(group=ifelse(grepl("data science", group,fixed=T),"data science",group))
head(data)
## # A tibble: 6 x 6
##   qi    Status  group                sub_group                    question value
##   <chr> <chr>   <chr>                <chr>                        <chr>    <chr>
## 1 3     desired strategic management corporate_performance        q1       2    
## 2 3     desired strategic management strategy_roadmap             q2       5    
## 3 3     desired strategic management investments                  q3       5    
## 4 3     desired strategic management treasury_tax_management      q4       2    
## 5 3     desired strategic management budgeting_planning_forecast… q5       1    
## 6 3     desired strategic management risk_management              q6       2

Viz 1-1

data%>%
  mutate(value=as.integer(value))%>%
  group_by(Status,group)%>%
  summarise(value=round(mean(value, na.rm=T)))%>%
  ggplot(aes(x=group, y=value, fill= Status, label=value))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Financial Gap Analysis",
       subtitle = "Desire vs Current",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Current","Goal"), values= c("dodgerblue4","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Change \n Managment", "Data \n Science", "Process \n  Management",
                            "Strategic \n Management", "Technology \n Management"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

V 2

Desired

Strategic Management

data%>%
  mutate(value=as.integer(value))%>%
  rename(empty=qi)%>%
  mutate(empty= case_when(
                       empty=="1" ~ "Board",
                       empty=="2" ~ "Management",
                       empty=="3" ~ "Business Manager",
                       empty=="4" ~ "Line Employee"
                       ))%>%
  filter(Status=="desired", group=="strategic management")%>%
  group_by(sub_group,empty)%>%
  summarise(value=round(mean(value, na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=empty))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Strategic Management",
       subtitle = "Desired",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Board","Business Manager","Line Employee","Management"), values= c("cadetblue","dodgerblue4","deepskyblue","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Budget \n Planning \n Forecasting", "Corporate \n Performance", "Investments",
                            "Law \n Regulation \n Compliance", "Risk \n Management", "Strategy \n Roadmap", "Treasury \n Tax \n Management"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Technology Management

data%>%
  mutate(value=as.integer(value))%>%
  rename(empty=qi)%>%
  mutate(empty= case_when(
                       empty=="1" ~ "Board",
                       empty=="2" ~ "Management",
                       empty=="3" ~ "Business Manager",
                       empty=="4" ~ "Line Employee"
                       ))%>%
  filter(Status=="desired", group=="technology management")%>% #select(sub_group)%>%unique()%>%arrange(sub_group)
  group_by(sub_group,empty)%>%
  summarise(value=round(mean(value, na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=empty))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Technology Management",
       subtitle = "Desired",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Board","Business Manager","Line Employee","Management"), values= c("cadetblue","dodgerblue4","deepskyblue","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Cloud \n Strategy", "IT \n Infrastructure", "System \n Integration \n Matrix",
                            "System \n Security \n Monitoring"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Process Management

data%>%
  mutate(value=as.integer(value))%>%
  rename(empty=qi)%>%
  mutate(empty= case_when(
                       empty=="1" ~ "Board",
                       empty=="2" ~ "Management",
                       empty=="3" ~ "Business Manager",
                       empty=="4" ~ "Line Employee"
                       ))%>%
  filter(Status=="desired", group=="process management")%>% #select(sub_group)%>%unique()%>%arrange(sub_group)
  group_by(sub_group,empty)%>%
  summarise(value=round(mean(value, na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=empty))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Process Management",
       subtitle = "Desired",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Board","Business Manager","Line Employee","Management"), values= c("cadetblue","dodgerblue4","deepskyblue","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Policies \n Procedures", "Process \n Flow \n Bottlenecks", "Process \n KPIs",
                            "Roles \n Responsibilities", "Workflow \n Optimization \n Level"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Change Management

data%>%
  mutate(value=as.integer(value))%>%
  rename(empty=qi)%>%
  mutate(empty= case_when(
                       empty=="1" ~ "Board",
                       empty=="2" ~ "Management",
                       empty=="3" ~ "Business Manager",
                       empty=="4" ~ "Line Employee"
                       ))%>%
  filter(Status=="desired", group=="change management")%>% #select(sub_group)%>%unique()%>%arrange(sub_group)
  group_by(sub_group,empty)%>%
  summarise(value=round(mean(value, na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=empty))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Change Management",
       subtitle = "Desired",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Board","Business Manager","Line Employee","Management"), values= c("cadetblue","dodgerblue4","deepskyblue","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Communication \n Structure \n Abilities", "Leadership \n Change \n Cooperation", "Organizational \n Culture","Readiness \n to \n Change"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Data Science

data%>%
  mutate(value=as.integer(value))%>%
  rename(empty=qi)%>%
  mutate(empty= case_when(
                       empty=="1" ~ "Board",
                       empty=="2" ~ "Management",
                       empty=="3" ~ "Business Manager",
                       empty=="4" ~ "Line Employee"
                       ))%>%
  filter(Status=="desired", group=="data science")%>% #select(sub_group)%>%unique()%>%arrange(sub_group)
  group_by(sub_group,empty)%>%
  summarise(value=round(mean(value, na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=empty))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Data Science",
       subtitle = "Desired",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Board","Business Manager","Line Employee","Management"), values= c("cadetblue","dodgerblue4","deepskyblue","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Data \n Governance", "Data \n Integration \n Aggregation", "Data \n Science \n Capability",
                            "Data \n Sources", "Process \n Standardization \n Automation", "Reporting \n Visualization"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Current Status

Not requested currently

V3 Deep dive

Strategic Management

data%>%
  mutate(value=as.integer(value))%>%
  filter(group=="strategic management")%>%
  group_by(Status,sub_group)%>%
  summarise(value=round(mean(value,na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=Status))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Strategic Management",
       subtitle = "Desire vs Current",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Current","Goal"), values= c("dodgerblue4","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Budget \n Planning \n Forecasting", "Corporate \n Performance", "Investments",
                            "Law \n Regulation \n Compliance", "Risk \n Management", "Strategy \n Roadmap", "Treasury \n Tax \n Management"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Technology Management

data%>%
  mutate(value=as.integer(value))%>%
  filter(group=="technology management")%>%
  group_by(Status,sub_group)%>%
  summarise(value=round(mean(value,na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=Status))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Technology Management",
       subtitle = "Desire vs Current",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Current","Goal"), values= c("dodgerblue4","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Cloud \n Strategy", "IT \n Infrastructure", "System \n Integration \n Matrix",
                            "System \n Security \n Monitoring"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Process Management

data%>%
  mutate(value=as.integer(value))%>%
  filter(group=="process management")%>%
  group_by(Status,sub_group)%>%
  summarise(value=round(mean(value,na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=Status))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Process Management",
       subtitle = "Desire vs Current",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Current","Goal"), values= c("dodgerblue4","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Policies \n Procedures", "Process \n Flow \n Bottlenecks", "Process \n KPIs",
                            "Roles \n Responsibilities", "Workflow \n Optimization \n Level"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Change Management

data%>%
  mutate(value=as.integer(value))%>%
  filter(group=="change management")%>%
  group_by(Status,sub_group)%>%
  summarise(value=round(mean(value,na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=Status))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Change Management",
       subtitle = "Desire vs Current",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Current","Goal"), values= c("dodgerblue4","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Communication \n Structure \n Abilities", "Leadership \n Change \n Cooperation", "Organizational \n Culture","Readiness \n to \n Change"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)

Data Science

data%>%
  mutate(value=as.integer(value))%>%
  filter(group=="data science")%>%
  group_by(Status,sub_group)%>%
  summarise(value=round(mean(value,na.rm = T)))%>%
  ggplot(aes(x=sub_group,y=value,fill=Status))+geom_col(position = "dodge2")+
  labs(fill = "",
       y="",
       x="",
       title = "Data Science",
       subtitle = "Desire vs Current",
       caption = "Source: LaNubia Finance Transformation Survey"
       )+
  scale_fill_manual(name = "", labels = c("Current","Goal"), values= c("dodgerblue4","aquamarine4"))+
  scale_y_continuous(name = "", breaks=c(1,2,3,4,5), labels=c("Oblivious","Explorer","Enlightened","Vanguard","Empowered"), limits = c(0,5))+
  scale_x_discrete(labels=c("Data \n Governance", "Data \n Integration \n Aggregation", "Data \n Science \n Capability",
                            "Data \n Sources", "Process \n Standardization \n Automation", "Reporting \n Visualization"))+
  theme_linedraw() +
  theme(legend.position = "bottom",
        plot.title = element_text(color="black", size=14, face="bold"))+
  coord_cartesian(clip = "off")+
  annotation_custom(l, xmin = -0.5, xmax = 1, ymin=-1,ymax=-2.25)