######################################################################################################################################################

rm(list = ls()) # Clean the memory 

######### DEFINE THE WORKING DIRECTORY ##############################################################################################################
setwd("C:\\Users\\Lenovo\\Desktop\\SENEGAL\\Inputs")  # or setwd("C:/Users/Lenovo/Desktop/SENEGAL/Inputs")

######################################################################################################################################################
################################################# READ THE DATABSE ········###########################################################################
######## IMPORT TTHE DATA #····#######################################################################################################################
    Data            <-  read.csv("SENEGAL.csv")     # 

    #  summary(Data)
            ncol(Data)      # Nombre de variables
## [1] 208
            nrow(Data)      # Nombre de parcelles collectees
## [1] 4477
        #   head(Data)          
        #   tail(data)

    plotId      <-  Data[, 1]                     # Column 1:  
    extId           <-  Data[, 2]                     # Column 2: 
    projectName     <-  Data[, 3]                     # Column 3:  
    userEmail       <-  Data[, 4]                     # Column 4:   
    long            <-  Data[, 5]                     # Column 5: 
    lat         <-  Data[, 6]                     # Column 6: 
    collectionTime  <-  Data[, 7]                     # Column 7: 
    flagged     <-  Data[, 8]                     # Column 8: 
    QAFlagged       <-  Data[, 9]                     # Column 9: 
    confidence      <-  Data[, 10]                    # Column 10: 
    code            <-  Data[, 11]                    # Column 11: 
    N           <-  length(plotId)              # or length(Any variable) # Sample size
#######################################################################################################################################################
    DataReduced     <-  subset(Data,select = c('plotId','extId', 'projectName','userEmail', 'long','lat', 'collectionTime','flagged', 'QAFlagged','confidence', 'code'))
    DataQC      <-  data.frame(DataReduced)

#######################################################################################################################################################
# names(DataQC)
Project = DataQC$projectName
Table_NumberPlots = table(factor(Project, levels=unique(Project)))
# Table_NumberPlots = table(Project)  

    set.seed(20)
############################# STRATIFIED RANDOM SAMPLING #######################################################################################################
########

#  install.packages("dplyr")
  library('dplyr')
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
############################# SYSTEMATIC RANDOM SAMPLING #######################################################################################################
    nSystematic         <-  ceiling(0.1*N)    # Sample size     

######## 1. Strata
DATAQC_Salif            <- filter(DataQC, projectName %in% "Salif")
DATAQC_Sakoura          <- filter(DataQC, projectName %in% "Sakoura")
DATAQC_Djibril          <- filter(DataQC, projectName %in% "Djibril")
DATAQC_Malick           <- filter(DataQC, projectName %in% "Malick")
DATAQC_NdeyeMaremeSene      <- filter(DataQC, projectName %in% "NdeyeMaremeSene")
DATAQC_Mariama          <- filter(DataQC, projectName %in% "Mariama")
DATAQC_PapeIbrahima     <- filter(DataQC, projectName %in% "PapeIbrahima")
DATAQC_Babacar          <- filter(DataQC, projectName %in% "Babacar")
DATAQC_Medare           <- filter(DataQC, projectName %in% "Medare")
DATAQC_MamadouKora      <- filter(DataQC, projectName %in% "MamadouKora")
DATAQC_Ousmane          <- filter(DataQC, projectName %in% "Ousmane")
DATAQC_CheikhMameMor        <- filter(DataQC, projectName %in% "CheikhMameMor")
DATAQC_Bineta           <- filter(DataQC, projectName %in% "Bineta")
DATAQC_Abdou            <- filter(DataQC, projectName %in% "Abdou")
DATAQC_MamadouNdour     <- filter(DataQC, projectName %in% "MamadouNdour")
DATAQC_MadyRacine           <- filter(DataQC, projectName %in% "MadyRacine")
DATAQC_Basile           <- filter(DataQC, projectName %in% "Basile")
DATAQC_Moussa           <- filter(DataQC, projectName %in% "Moussa")
DATAQC_NdeyeKany            <- filter(DataQC, projectName %in% "NdeyeKany")
DATAQC_ColonelModouMoustapha    <- filter(DataQC, projectName %in% "ColonelModouMoustapha")
DATAQC_PapeOumar            <- filter(DataQC, projectName %in% "PapeOumar")
DATAQC_Madicke          <- filter(DataQC, projectName %in% "Madicke")
DATAQC_Marietou         <- filter(DataQC, projectName %in% "Marietou")
DATAQC_Dado             <- filter(DataQC, projectName %in% "Dado")



######## 2. Proportionality constant
alpha   <- nSystematic/N  

######## 3. Strata sizes
N_Salif         <-  nrow(DATAQC_Salif)
N_Sakoura           <-  nrow(DATAQC_Sakoura)
N_Djibril           <-  nrow(DATAQC_Djibril)
N_Malick            <-  nrow(DATAQC_Malick)
N_NdeyeMaremeSene       <-  nrow(DATAQC_NdeyeMaremeSene)
N_Mariama           <-  nrow(DATAQC_Mariama)
N_PapeIbrahima      <-  nrow(DATAQC_PapeIbrahima)
N_Babacar           <-  nrow(DATAQC_Babacar)
N_Medare            <-  nrow(DATAQC_Medare)
N_MamadouKora       <-  nrow(DATAQC_MamadouKora)
N_Ousmane           <-  nrow(DATAQC_Ousmane)
N_CheikhMameMor     <-  nrow(DATAQC_CheikhMameMor)
N_Bineta            <-  nrow(DATAQC_Bineta)
N_Abdou         <-  nrow(DATAQC_Abdou)
N_MamadouNdour      <-  nrow(DATAQC_MamadouNdour)
N_MadyRacine        <-  nrow(DATAQC_MadyRacine)
N_Basile            <-  nrow(DATAQC_Basile)
N_Moussa            <-  nrow(DATAQC_Moussa)
N_NdeyeKany         <-  nrow(DATAQC_NdeyeKany)
N_ColonelModouMoustapha <-  nrow(DATAQC_ColonelModouMoustapha)
N_PapeOumar         <-  nrow(DATAQC_PapeOumar)
N_Madicke           <-  nrow(DATAQC_Madicke)
N_Marietou          <-  nrow(DATAQC_Marietou)
N_Dado          <-  nrow(DATAQC_Dado)


######## 4. Strata Sample sizes
n_Salif         <-  round(alpha * N_Salif)
n_Sakoura           <-  round(alpha * N_Sakoura)
n_Djibril           <-  round(alpha * N_Djibril)
n_Malick            <-  round(alpha * N_Malick)
n_NdeyeMaremeSene       <-  round(alpha * N_NdeyeMaremeSene)
n_Mariama           <-  round(alpha * N_Mariama)
n_PapeIbrahima      <-  round(alpha * N_PapeIbrahima)
n_Babacar           <-  round(alpha * N_Babacar)
n_Medare            <-  round(alpha * N_Medare)
n_MamadouKora       <-  round(alpha * N_MamadouKora)
n_Ousmane           <-  round(alpha * N_Ousmane)
n_CheikhMameMor     <-  round(alpha * N_CheikhMameMor)
n_Bineta            <-  round(alpha * N_Bineta)
n_Abdou         <-  round(alpha * N_Abdou)
n_MamadouNdour      <-  round(alpha * N_MamadouNdour)
n_MadyRacine        <-  round(alpha * N_MadyRacine)
n_Basile            <-  round(alpha * N_Basile)
n_Moussa            <-  round(alpha * N_Moussa)
n_NdeyeKany         <-  round(alpha * N_NdeyeKany)
n_ColonelModouMoustapha <-  round(alpha * N_ColonelModouMoustapha)
n_PapeOumar         <-  round(alpha * N_PapeOumar)
n_Madicke           <-  round(alpha * N_Madicke)
n_Marietou          <-  round(alpha * N_Marietou)
n_Dado          <-  round(alpha * N_Dado)


########################################################################################################################################################
########################################################################################################################################################
########################################################################################################################################################
######## 5. Sample by Stratum ######################################################################################################

######## 5.1. Frequency table_Strata sizes y Strata sample sizes

FrequencyStrata                 <- data.frame(c(N_Salif, N_Sakoura, N_Djibril, N_Malick, N_NdeyeMaremeSene, N_PapeIbrahima, N_Babacar, N_Medare, N_MamadouKora, N_Ousmane, N_CheikhMameMor, N_Bineta, N_Abdou, N_MamadouNdour, N_MadyRacine,N_Basile,N_Moussa,N_NdeyeKany, N_ColonelModouMoustapha,N_PapeOumar,N_Madicke, N_Marietou, N_Dado),
                                    c(n_Salif, n_Sakoura, n_Djibril, n_Malick, n_NdeyeMaremeSene, n_PapeIbrahima, n_Babacar, n_Medare, n_MamadouKora, n_Ousmane, n_CheikhMameMor, n_Bineta, n_Abdou, n_MamadouNdour, n_MadyRacine,n_Basile,n_Moussa,n_NdeyeKany, n_ColonelModouMoustapha,n_PapeOumar,n_Madicke, n_Marietou, n_Dado))
colnames(FrequencyStrata)       <- c('Stratum size', 'Stratum sample size')
rownames(FrequencyStrata)       <- c('Salif', 'Sakoura', 'Djibril', 'Malick', 'NdeyeMaremeSene', 'PapeIbrahima', 'Babacar', 'Medare', 'MamadouKora', 'Ousmane', 'CheikhMameMor', 'Bineta', 'Abdou', 'MamadouNdour', 'MadyRacine', 'Basile', 'Moussa', 'NdeyeKany', 'ColonelModouMoustapha','PapeOumar','Madicke', 'Marietou', 'Dado')

#######################################################################################################################################################
######## 5.2. LSS_Salif

    nLSS_Salif      <-  n_Salif 
######## Function to obtain a LSS_Salif
    LSS_Salif = function(N_Salif,n_salif){
                k_Salif = round(N_Salif/nLSS_Salif,0)   # Reciprocal of the sampling fraction 
                r_Salif = seq(1:k_Salif)                        # Starting points
                Start_Salif = sample(r_Salif, size = 1)
                seq(Start_Salif, Start_Salif + k_Salif*(n_Salif-1), k_Salif)
                }
######## A LSS_Salif
    LSS_Salif <- DATAQC_Salif[LSS_Salif(N_Salif, nLSS_Salif), ]
########################################################################################################################################################
######## 5.3. LSS_Sakoura

    nLSS_Sakoura        <-  n_Sakoura 
######## Function to obtain a LSS_Sakoura
    LSS_Sakoura = function(N_Sakoura,n_Sakoura){
                k_Sakoura = round(N_Sakoura/nLSS_Sakoura,0) # Reciprocal of the sampling fraction 
                r_Sakoura = seq(1:k_Sakoura)                        # Starting points
                Start_Sakoura = sample(r_Sakoura, size = 1)
                seq(Start_Sakoura, Start_Sakoura + k_Sakoura*(n_Sakoura-1), k_Sakoura)
                }
######## A LSS_Sakoura
    LSS_Sakoura <- DATAQC_Sakoura[LSS_Sakoura(N_Sakoura, nLSS_Sakoura), ]
########################################################################################################################################################
######## 5.4. LSS_Djibril

    nLSS_Djibril        <-  n_Djibril 
######## Function to obtain a LSS_Djibril
    LSS_Djibril = function(N_Djibril,n_Djibril){
                k_Djibril = round(N_Djibril/nLSS_Djibril,0) # Reciprocal of the sampling fraction 
                r_Djibril = seq(1:k_Djibril)                        # Starting points
                Start_Djibril = sample(r_Djibril, size = 1)
                seq(Start_Djibril, Start_Djibril + k_Djibril*(n_Djibril-1), k_Djibril)
                }
######## A LSS_Djibril
    LSS_Djibril <- DATAQC_Djibril[LSS_Djibril(N_Djibril, nLSS_Djibril), ]
########################################################################################################################################################
######## 5.5. LSS_Malick

    nLSS_Malick     <-  n_Malick 
######## Function to obtain a LSS_Malick
    LSS_Malick = function(N_Malick,n_Malick){
                k_Malick = round(N_Malick/nLSS_Malick,0)    # Reciprocal of the sampling fraction 
                r_Malick = seq(1:k_Malick)                      # Starting points
                Start_Malick = sample(r_Malick, size = 1)
                seq(Start_Malick, Start_Malick + k_Malick*(n_Malick-1), k_Malick)
                }
######## A LSS_Malick
    LSS_Malick <- DATAQC_Malick[LSS_Malick(N_Malick, nLSS_Malick), ]
########################################################################################################################################################
######## 5.6. LSS_NdeyeMaremeSene

    nLSS_NdeyeMaremeSene        <-  n_NdeyeMaremeSene 
######## Function to obtain a LSS_NdeyeMaremeSene
    LSS_NdeyeMaremeSene = function(N_NdeyeMaremeSene,n_NdeyeMaremeSene){
                k_NdeyeMaremeSene = round(N_NdeyeMaremeSene/nLSS_NdeyeMaremeSene,0) # Reciprocal of the sampling fraction 
                r_NdeyeMaremeSene = seq(1:k_NdeyeMaremeSene)                        # Starting points
                Start_NdeyeMaremeSene = sample(r_NdeyeMaremeSene, size = 1)
                seq(Start_NdeyeMaremeSene, Start_NdeyeMaremeSene + k_NdeyeMaremeSene*(n_NdeyeMaremeSene-1), k_NdeyeMaremeSene)
                }
######## A LSS_NdeyeMaremeSene
    LSS_NdeyeMaremeSene <- DATAQC_NdeyeMaremeSene[LSS_NdeyeMaremeSene(N_NdeyeMaremeSene, nLSS_NdeyeMaremeSene), ]
########################################################################################################################################################
######## 5.7. LSS_Mariama

    nLSS_Mariama        <-  n_Mariama 
######## Function to obtain a LSS_Mariama
    LSS_Mariama = function(N_Mariama,n_Mariama){
                k_Mariama = round(N_Mariama/nLSS_Mariama,0) # Reciprocal of the sampling fraction 
                r_Mariama = seq(1:k_Mariama)                        # Starting points
                Start_Mariama = sample(r_Mariama, size = 1)
                seq(Start_Mariama, Start_Mariama + k_Mariama*(n_Mariama-1), k_Mariama)
                }
######## A LSS_Mariama
    LSS_Mariama <- DATAQC_Mariama[LSS_Mariama(N_Mariama, nLSS_Mariama), ]
########################################################################################################################################################
######## 5.8. LSS_PapeIbrahima

    nLSS_PapeIbrahima       <-  n_PapeIbrahima 
######## Function to obtain a LSS_PapeIbrahima
    LSS_PapeIbrahima = function(N_PapeIbrahima,n_PapeIbrahima){
                k_PapeIbrahima = round(N_PapeIbrahima/nLSS_PapeIbrahima,0)  # Reciprocal of the sampling fraction 
                r_PapeIbrahima = seq(1:k_PapeIbrahima)                      # Starting points
                Start_PapeIbrahima = sample(r_PapeIbrahima, size = 1)
                seq(Start_PapeIbrahima, Start_PapeIbrahima + k_PapeIbrahima*(n_PapeIbrahima-1), k_PapeIbrahima)
                }
######## A LSS_PapeIbrahima
    LSS_PapeIbrahima <- DATAQC_PapeIbrahima[LSS_PapeIbrahima(N_PapeIbrahima, nLSS_PapeIbrahima), ]
########################################################################################################################################################
######## 5.9. LSS_Babacar

    nLSS_Babacar        <-  n_Babacar 
######## Function to obtain a LSS_Babacar
    LSS_Babacar = function(N_Babacar,n_Babacar){
                k_Babacar = round(N_Babacar/nLSS_Babacar,0) # Reciprocal of the sampling fraction 
                r_Babacar = seq(1:k_Babacar)                        # Starting points
                Start_Babacar = sample(r_Babacar, size = 1)
                seq(Start_Babacar, Start_Babacar + k_Babacar*(n_Babacar-1), k_Babacar)
                }
######## A LSS_Babacar
    LSS_Babacar <- DATAQC_Babacar[LSS_Babacar(N_Babacar, nLSS_Babacar), ]
########################################################################################################################################################
######## 5.10. LSS_Medare

    nLSS_Medare     <-  n_Medare 
######## Function to obtain a LSS_Medare
    LSS_Medare = function(N_Medare,n_Medare){
                k_Medare = round(N_Medare/nLSS_Medare,0)    # Reciprocal of the sampling fraction 
                r_Medare = seq(1:k_Medare)                      # Starting points
                Start_Medare = sample(r_Medare, size = 1)
                seq(Start_Medare, Start_Medare + k_Medare*(n_Medare-1), k_Medare)
                }
######## A LSS_Medare
    LSS_Medare <- DATAQC_Medare[LSS_Medare(N_Medare, nLSS_Medare), ]
########################################################################################################################################################
######## 5.11. LSS_MamadouKora

    nLSS_MamadouKora        <-  n_MamadouKora 
######## Function to obtain a LSS_MamadouKora
    LSS_MamadouKora = function(N_MamadouKora,n_MamadouKora){
                k_MamadouKora = round(N_MamadouKora/nLSS_MamadouKora,0) # Reciprocal of the sampling fraction 
                r_MamadouKora = seq(1:k_MamadouKora)                        # Starting points
                Start_MamadouKora = sample(r_MamadouKora, size = 1)
                seq(Start_MamadouKora, Start_MamadouKora + k_MamadouKora*(n_MamadouKora-1), k_MamadouKora)
                }
######## A LSS_MamadouKora
    LSS_MamadouKora <- DATAQC_MamadouKora[LSS_MamadouKora(N_MamadouKora, nLSS_MamadouKora), ]
########################################################################################################################################################
######## 5.12. LSS_Ousmane

    nLSS_Ousmane        <-  n_Ousmane 
######## Function to obtain a LSS_Ousmane
    LSS_Ousmane = function(N_Ousmane,n_Ousmane){
                k_Ousmane = round(N_Ousmane/nLSS_Ousmane,0) # Reciprocal of the sampling fraction 
                r_Ousmane = seq(1:k_Ousmane)                        # Starting points
                Start_Ousmane = sample(r_Ousmane, size = 1)
                seq(Start_Ousmane, Start_Ousmane + k_Ousmane*(n_Ousmane-1), k_Ousmane)
                }
######## A LSS_Ousmane
    LSS_Ousmane <- DATAQC_Ousmane[LSS_Ousmane(N_Ousmane, nLSS_Ousmane), ]
########################################################################################################################################################
######## 5.13. LSS_CheikhMameMor

    nLSS_CheikhMameMor      <-  n_CheikhMameMor 
######## Function to obtain a LSS_CheikhMameMor
    LSS_CheikhMameMor = function(N_CheikhMameMor,n_CheikhMameMor){
                k_CheikhMameMor = round(N_CheikhMameMor/nLSS_CheikhMameMor,0)   # Reciprocal of the sampling fraction 
                r_CheikhMameMor = seq(1:k_CheikhMameMor)                        # Starting points
                Start_CheikhMameMor = sample(r_CheikhMameMor, size = 1)
                seq(Start_CheikhMameMor, Start_CheikhMameMor + k_CheikhMameMor*(n_CheikhMameMor-1), k_CheikhMameMor)
                }
######## A LSS_CheikhMameMor
    LSS_CheikhMameMor <- DATAQC_CheikhMameMor[LSS_CheikhMameMor(N_CheikhMameMor, nLSS_CheikhMameMor), ]
########################################################################################################################################################
######## 5.14. LSS_Bineta

    nLSS_Bineta     <-  n_Bineta 
######## Function to obtain a LSS_Bineta
    LSS_Bineta = function(N_Bineta,n_Bineta){
                k_Bineta = round(N_Bineta/nLSS_Bineta,0)    # Reciprocal of the sampling fraction 
                r_Bineta = seq(1:k_Bineta)                      # Starting points
                Start_Bineta = sample(r_Bineta, size = 1)
                seq(Start_Bineta, Start_Bineta + k_Bineta*(n_Bineta-1), k_Bineta)
                }
######## A LSS_Bineta
    LSS_Bineta <- DATAQC_Bineta[LSS_Bineta(N_Bineta, nLSS_Bineta), ]
########################################################################################################################################################
######## 5.15. LSS_Abdou

    nLSS_Abdou      <-  n_Abdou 
######## Function to obtain a LSS_Abdou
    LSS_Abdou = function(N_Abdou,n_Abdou){
                k_Abdou = round(N_Abdou/nLSS_Abdou,0)   # Reciprocal of the sampling fraction 
                r_Abdou = seq(1:k_Abdou)                        # Starting points
                Start_Abdou = sample(r_Abdou, size = 1)
                seq(Start_Abdou, Start_Abdou + k_Abdou*(n_Abdou-1), k_Abdou)
                }
######## A LSS_Abdou
    LSS_Abdou <- DATAQC_Abdou[LSS_Abdou(N_Abdou, nLSS_Abdou), ]
########################################################################################################################################################
######## 5.16. LSS_MamadouNdour

    nLSS_MamadouNdour       <-  n_MamadouNdour 
######## Function to obtain a LSS_MamadouNdour
    LSS_MamadouNdour = function(N_MamadouNdour,n_MamadouNdour){
                k_MamadouNdour = round(N_MamadouNdour/nLSS_MamadouNdour,0)  # Reciprocal of the sampling fraction 
                r_MamadouNdour = seq(1:k_MamadouNdour)                      # Starting points
                Start_MamadouNdour = sample(r_MamadouNdour, size = 1)
                seq(Start_MamadouNdour, Start_MamadouNdour + k_MamadouNdour*(n_MamadouNdour-1), k_MamadouNdour)
                }
######## A LSS_MamadouNdour
    LSS_MamadouNdour <- DATAQC_MamadouNdour[LSS_MamadouNdour(N_MamadouNdour, nLSS_MamadouNdour), ]
########################################################################################################################################################
######## 5.17. LSS_MadyRacine

    nLSS_MadyRacine     <-  n_MadyRacine 
######## Function to obtain a LSS_MadyRacine
    LSS_MadyRacine = function(N_MadyRacine,n_MadyRacine){
                k_MadyRacine = round(N_MadyRacine/nLSS_MadyRacine,0)    # Reciprocal of the sampling fraction 
                r_MadyRacine = seq(1:k_MadyRacine)                      # Starting points
                Start_MadyRacine = sample(r_MadyRacine, size = 1)
                seq(Start_MadyRacine, Start_MadyRacine + k_MadyRacine*(n_MadyRacine-1), k_MadyRacine)
                }
######## A LSS_MadyRacine
    LSS_MadyRacine <- DATAQC_MadyRacine[LSS_MadyRacine(N_MadyRacine, nLSS_MadyRacine), ]
########################################################################################################################################################
######## 5.18. LSS_Basile

    nLSS_Basile     <-  n_Basile 
######## Function to obtain a LSS_Basile
    LSS_Basile = function(N_Basile,n_Basile){
                k_Basile = round(N_Basile/nLSS_Basile,0)    # Reciprocal of the sampling fraction 
                r_Basile = seq(1:k_Basile)                      # Starting points
                Start_Basile = sample(r_Basile, size = 1)
                seq(Start_Basile, Start_Basile + k_Basile*(n_Basile-1), k_Basile)
                }
######## A LSS_Basile
    LSS_Basile <- DATAQC_Basile[LSS_Basile(N_Basile, nLSS_Basile), ]
########################################################################################################################################################
######## 5.19. LSS_Moussa

    nLSS_Moussa     <-  n_Moussa 
######## Function to obtain a LSS_Moussa
    LSS_Moussa = function(N_Moussa,n_Moussa){
                k_Moussa = round(N_Moussa/nLSS_Moussa,0)    # Reciprocal of the sampling fraction 
                r_Moussa = seq(1:k_Moussa)                      # Starting points
                Start_Moussa = sample(r_Moussa, size = 1)
                seq(Start_Moussa, Start_Moussa + k_Moussa*(n_Moussa-1), k_Moussa)
                }
######## A LSS_Moussa
    LSS_Moussa <- DATAQC_Moussa[LSS_Moussa(N_Moussa, nLSS_Moussa), ]
########################################################################################################################################################
######## 5.20. LSS_NdeyeKany

    nLSS_NdeyeKany      <-  n_NdeyeKany 
######## Function to obtain a LSS_NdeyeKany
    LSS_NdeyeKany = function(N_NdeyeKany,n_NdeyeKany){
                k_NdeyeKany = round(N_NdeyeKany/nLSS_NdeyeKany,0)   # Reciprocal of the sampling fraction 
                r_NdeyeKany = seq(1:k_NdeyeKany)                        # Starting points
                Start_NdeyeKany = sample(r_NdeyeKany, size = 1)
                seq(Start_NdeyeKany, Start_NdeyeKany + k_NdeyeKany*(n_NdeyeKany-1), k_NdeyeKany)
                }
######## A LSS_NdeyeKany
    LSS_NdeyeKany <- DATAQC_NdeyeKany[LSS_NdeyeKany(N_NdeyeKany, nLSS_NdeyeKany), ]
########################################################################################################################################################
######## 5.21. LSS_ColonelModouMoustapha

    nLSS_ColonelModouMoustapha      <-  n_ColonelModouMoustapha 
######## Function to obtain a LSS_ColonelModouMoustapha
    LSS_ColonelModouMoustapha = function(N_ColonelModouMoustapha,n_ColonelModouMoustapha){
                k_ColonelModouMoustapha = round(N_ColonelModouMoustapha/nLSS_ColonelModouMoustapha,0)   # Reciprocal of the sampling fraction 
                r_ColonelModouMoustapha = seq(1:k_ColonelModouMoustapha)                        # Starting points
                Start_ColonelModouMoustapha = sample(r_ColonelModouMoustapha, size = 1)
                seq(Start_ColonelModouMoustapha, Start_ColonelModouMoustapha + k_ColonelModouMoustapha*(n_ColonelModouMoustapha-1), k_ColonelModouMoustapha)
                }
######## A LSS_ColonelModouMoustapha
    LSS_ColonelModouMoustapha <- DATAQC_ColonelModouMoustapha[LSS_ColonelModouMoustapha(N_ColonelModouMoustapha, nLSS_ColonelModouMoustapha), ]
########################################################################################################################################################
######## 5.22. LSS_PapeOumar

    nLSS_PapeOumar      <-  n_PapeOumar 
######## Function to obtain a LSS_PapeOumar
    LSS_PapeOumar = function(N_PapeOumar,n_PapeOumar){
                k_PapeOumar = round(N_PapeOumar/nLSS_PapeOumar,0)   # Reciprocal of the sampling fraction 
                r_PapeOumar = seq(1:k_PapeOumar)                        # Starting points
                Start_PapeOumar = sample(r_PapeOumar, size = 1)
                seq(Start_PapeOumar, Start_PapeOumar + k_PapeOumar*(n_PapeOumar-1), k_PapeOumar)
                }
######## A LSS_PapeOumar
    LSS_PapeOumar <- DATAQC_PapeOumar[LSS_PapeOumar(N_PapeOumar, nLSS_PapeOumar), ]
########################################################################################################################################################
######## 5.23. LSS_Madicke

    nLSS_Madicke        <-  n_Madicke 
######## Function to obtain a LSS_Madicke
    LSS_Madicke = function(N_Madicke,n_Madicke){
                k_Madicke = round(N_Madicke/nLSS_Madicke,0) # Reciprocal of the sampling fraction 
                r_Madicke = seq(1:k_Madicke)                        # Starting points
                Start_Madicke = sample(r_Madicke, size = 1)
                seq(Start_Madicke, Start_Madicke + k_Madicke*(n_Madicke-1), k_Madicke)
                }
######## A LSS_Madicke
    LSS_Madicke <- DATAQC_Madicke[LSS_Madicke(N_Madicke, nLSS_Madicke), ]
########################################################################################################################################################
######## 5.24. LSS_Marietou

    nLSS_Marietou       <-  n_Marietou 
######## Function to obtain a LSS_Marietou
    LSS_Marietou = function(N_Marietou,n_Marietou){
                k_Marietou = round(N_Marietou/nLSS_Marietou,0)  # Reciprocal of the sampling fraction 
                r_Marietou = seq(1:k_Marietou)                      # Starting points
                Start_Marietou = sample(r_Marietou, size = 1)
                seq(Start_Marietou, Start_Marietou + k_Marietou*(n_Marietou-1), k_Marietou)
                }
######## A LSS_Marietou
    LSS_Marietou <- DATAQC_Marietou[LSS_Marietou(N_Marietou, nLSS_Marietou), ]
########################################################################################################################################################
######## 5.25. LSS_Dado

    nLSS_Dado       <-  n_Dado 
######## Function to obtain a LSS_Dado
    LSS_Dado = function(N_Dado,n_Dado){
                k_Dado = round(N_Dado/nLSS_Dado,0)  # Reciprocal of the sampling fraction 
                r_Dado = seq(1:k_Dado)                      # Starting points
                Start_Dado = sample(r_Dado, size = 1)
                seq(Start_Dado, Start_Dado + k_Dado*(n_Dado-1), k_Dado)
                }
######## A LSS_Dado
    LSS_Dado <- DATAQC_Dado[LSS_Dado(N_Dado, nLSS_Dado), ]
########################################################################################################################################################


######################################################################################################################################################
##################################### DEFINE THE OUTPUT DIRECTORY #####################################################################################

setwd("C:\\Users\\Lenovo\\Desktop\\SENEGAL\\Outputs")  # or setwd("C:/Users/Lenovo/Desktop/SENEGAL/Outputs")
# SAVE FINAL RESULTS

    write.csv(FrequencyStrata,file="Strata sizes vs Strata sample sizes.csv")
    write.csv(LSS_Salif,file="QC_Salif.csv")
    write.csv(LSS_Sakoura,file="QC_Sakoura.csv")
    write.csv(LSS_Djibril,file="QC_Djibril.csv")
    write.csv(LSS_Malick,file="QC_Malick.csv")
    write.csv(LSS_NdeyeMaremeSene,file="QC_NdeyeMaremeSene.csv")
    write.csv(LSS_Mariama,file="QC_Mariama.csv")
    write.csv(LSS_PapeIbrahima,file="QC_PapeIbrahima.csv")
    write.csv(LSS_Babacar,file="QC_Babacar.csv")
    write.csv(LSS_Medare,file="QC_Medare.csv")
    write.csv(LSS_MamadouKora,file="QC_MamadouKora.csv")
    write.csv(LSS_Ousmane,file="QC_Ousmane.csv")
    write.csv(LSS_CheikhMameMor,file="QC_CheikhMameMor.csv")
    write.csv(LSS_Bineta,file="QC_Bineta.csv")
    write.csv(LSS_Abdou,file="QC_Abdou.csv")
    write.csv(LSS_MamadouNdour,file="QC_MamadouNdour.csv")
    write.csv(LSS_MadyRacine,file="QC_MadyRacine.csv")
    write.csv(LSS_Basile,file="QC_Basile.csv")
    write.csv(LSS_Moussa,file="QC_Moussa.csv")
    write.csv(LSS_NdeyeKany,file="QC_NdeyeKany.csv")
    write.csv(LSS_ColonelModouMoustapha,file="QC_ColonelModouMoustapha.csv")
    write.csv(LSS_PapeOumar,file="QC_PapeOumar.csv")
    write.csv(LSS_Madicke,file="QC_Madicke.csv")
    write.csv(LSS_Marietou,file="QC_Marietou.csv")
    write.csv(LSS_Dado,file="QC_Dado.csv")



################################################### FINAL ###############################################################################################