Install required packages if not already installed

packages <- c(“stringr”, “igraph”, “tidygraph”, “ggraph”, “dplyr”, “tidyr”, “shiny”) installed <- packages %in% rownames(installed.packages()) if (any(!installed)) { install.packages(packages[!installed]) }

Load libraries

library(stringr) library(igraph) library(tidygraph) library(ggraph) library(dplyr) library(tidyr) library(shiny)

Mock data (since MSM_LPB_update is undefined in your code)

Replace this with actual data loading

set.seed(123) MSM_LPB_update <- data.frame(matrix(sample(letters, 50, replace = TRUE), ncol = 5)) HSS_joint_data <- MSM_LPB_update names(HSS_joint_data) <- c(“Basic information/_02_Province”, “Basic information/District_VTC”, “Basic information/District_LPB”, “Basic information/District_SVK”, “RDS values/RDS ID”)

Adjust column names

names(HSS_joint_data)[names(HSS_joint_data) == “Basic information/_02_Province”] <- “Province_target” names(HSS_joint_data)[names(HSS_joint_data) == “RDS values/RDS ID”] <- “RDS_ID”

Add a Unique_ID column (mock example for demonstration)

HSS_joint_data <- HSS_joint_data %>% mutate(Unique_ID = paste(“Mock”, row_number(), sep = “_“))

Create long hierarchy data (mock example for the graph)

long_hierarchy <- HSS_joint_data %>% mutate(Parent_ID = paste(“Parent”, row_number(), sep = “”), Seed = paste(”Seed”, row_number(), sep = ””)) %>% pivot_longer(cols = c(Parent_ID, Seed), names_to = “Seed_Type”, values_to = “Seed_ID”) %>% filter(Seed_ID != “NA”) %>% mutate(Wave = 1)

Define filtered_hierarchy (mock data for Shiny)

Filter_long_hierarchy <- long_hierarchy