Skip to content
Snippets Groups Projects
Note.Rmd 13.1 KiB
Newer Older
title: "Point d'actualité mensuel sur les contrats aidés"
author: "Dares - Département de l'insertion professionnelle"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output: html_document
params:
  annee_iae: !r ANNEE_IAE
  mois_iae: !r MOIS_IAE
  chemin_IAE: !r chemin_IAE
  chemin_IAE_SL: !r chemin_IAE_SL
  annee_cui: !r annee_cui
  mois_cui: !r mois_cui
  chemin_CUI: !r chemin_CUI
  chemin_CUI_SL: !r chemin_CUI_SL
  resume: !r resume_du_mois
p, h1, h2, h3, h4 {
    font-family: Arial, sans-serif;
}
table {
  border: 1px solid #000;
  font-size: 10pt;
h1 {font-size: 18pt;}
h1.title {font-size: 18pt;}
h2 {font-size: 16pt;}
h3 {font-size: 14pt;}
h4 {font-size: 12pt;}
h5 {font-size: 11pt;}
h6 {font-size: 11pt;}
p {font-size: 11pt;}
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.width = 6, fig.height = 4)
theme_set(theme_light())
theme_update(axis.title.x = element_blank(),
             axis.title.y = element_blank(),
             legend.title=element_blank(),
             axis.text.x = element_text(angle = 45, hjust=1))

update_geom_defaults("line", list(size = 0.75))

d <- dmy(paste(1, params$mois_iae, params$annee_iae))-months(2)
d_m1 <- d-months(1)
d_a1 <- d-years(1)

Julien Blasco's avatar
Julien Blasco committed
d_cui <- dmy(paste(1, params$mois_cui, params$annee_cui))
d_cui_m1 <- d_cui-months(1)
d_cui_a1 <- d_cui-years(1)

# Mise en forme des chiffres : arrondis à la centaine et séparateur de milliers
mef <- function(x) {
        y <- abs(round(x, digits = 1) * 1000)
        y <- prettyNum(y, big.mark="&nbsp;")
mef_pourcent <- function(x) {
        y <- abs(round(x*100, digits = 0))
        y <- paste0(prettyNum(y, decimal.mark = ","), " %")
        return(y)
}

# + / - devant le chiffre suivant son signe
signe <- function(x) {
        return(ifelse(x >= 0, "+", "-"))
Julien Blasco's avatar
Julien Blasco committed
## Chargement tableaux IAE
NoteMens_IAE <- list()
NoteMens_IAE[["FE"]] <- read.xlsx(params$chemin_IAE, sheet = "NoteMens_FE")
NoteMens_IAE[["Jeune"]] <- read.xlsx(params$chemin_IAE, sheet = "NoteMens_Jeune")

totalFE_IAE <- NoteMens_IAE$FE %>% 
  summarise_at(vars(-Structure), sum)

totalJeune_IAE <- NoteMens_IAE$Jeune %>% 
  summarise_at(vars(-Structure), sum)

total_IAE <- bind_rows(
  totalFE_IAE,
  totalJeune_IAE
Julien Blasco's avatar
Julien Blasco committed
)

colnames(total_IAE) <- c(
  paste0(months(d_a1), " ", year(d_a1)),
  paste0(months(d_m1), " ", year(d_m1)),
  paste0(months(d), " ", year(d)),
  "sur un an",
  paste0(months(d_a1), " " , year(d_a1)),
  paste0(months(d), " ",  year(d)),
  paste0(months(d_a1), " ", year(d_a1)),
  paste0(months(d_m1), " ", year(d_m1)),
  paste0(months(d), " ", year(d))
)

rownames(total_IAE) <- c("Ensemble de l'IAE (tous âges)", "Ensemble de l'IAE (moins de 26 ans)")
Julien Blasco's avatar
Julien Blasco committed
## Chargement tableaux CUI-CIE
TdB <- read.xlsx(params$chemin_CUI, sheet = "TdB")
TdB_Jeunes <- read.xlsx(params$chemin_CUI, sheet = "TdB_Jeunes")
# On met le nom des indicateurs en nom de la ligne
row.names(TdB) <- TdB$Indicateur
row.names(TdB_Jeunes) <- TdB_Jeunes$Indicateur
# On enlève la colonne Indicateurs
TdB <- TdB[, -c(1)]
TdB_Jeunes <- TdB_Jeunes[, -c(1)]
# On ne sélectionne que les PEC et les CIE dans le tableau FE
TdB <- TdB[row.names(TdB) %in% c("PEC", "CUI-CIE"), ]
# On ajoute la somme par colonnes
TdB <- rbind(TdB, apply(TdB,2,sum))
rownames(TdB)[3] <- "Somme"
TdB_Jeunes <- rbind(TdB_Jeunes, apply(TdB_Jeunes,2,sum))
rownames(TdB_Jeunes)[3] <- "Somme"

Julien Blasco's avatar
Julien Blasco committed
TdB_fusion <- bind_rows(TdB, TdB_Jeunes)

colnames(TdB_fusion) <- c(
  paste0(months(d_cui_a1), " ", year(d_cui_a1)),
  paste0(months(d_cui_m1), " ", year(d_cui_m1)),
  paste0(months(d_cui), " ", year(d_cui)),
  paste0(months(d_cui_a1),  " ", year(d_cui_a1)),
  paste0(months(d_cui) ,  " ",  year(d_cui)),
  paste0(months(d_cui_a1), " ", year(d_cui_a1)),
  paste0(months(d_cui_m1), " ", year(d_cui_m1)),
  paste0(months(d_cui), " ", year(d_cui))
)

rownames(TdB_fusion) <- c(
  "PEC", "CUI-CIE", "Ensemble",
  "PEC (moins de 26 ans)", 
  "CUI-CIE (moins de 26 ans)", 
  "Ensemble (moins de 26 ans)"
  )

Julien Blasco's avatar
Julien Blasco committed
## Chargement des séries longues IAE
IAE_SL <- list(
  FE = read.xlsx(params$chemin_IAE_SL, sheet = "IAE Red FE"),
  Jeune = read.xlsx(params$chemin_IAE_SL, sheet = "IAE Red Jeune")
)

CUI_SL <- list(
  FE = read.xlsx(params$chemin_CUI_SL, sheet = "Serie_Mensuelle_FE"),
  Jeune = read.xlsx(params$chemin_CUI_SL, sheet = "Serie_Mensuelle_Jeunes")
)
Julien Blasco's avatar
Julien Blasco committed
## calcul des chiffres de la note mensuelle - IAE
Stock_FE_iae <- totalFE_IAE$Stock_m
Entree_FE_m_iae <- totalFE_IAE$Entree_m
Entree_Jeunes_m_iae <- totalJeune_IAE$Entree_m

Evol_Stock_a_IAE <- totalFE_IAE$Stock_m-totalFE_IAE$Stock_a_1
Evol_Stock_m_IAE <- totalFE_IAE$Stock_m-totalFE_IAE$Stock_m_1

## calcul des chiffres de la note mensuelle - CIE-CUI
Stock_FE_cui <- TdB["Somme", "Stock_m"]
Stock_FE_PEC <- TdB["PEC", "Stock_m"]
Stock_FE_CIE <- TdB["CUI-CIE", "Stock_m"]
Entree_FE_m_cui <- TdB["Somme", "Entree_m"]
Entree_FE_m_PEC <- TdB["PEC", "Entree_m"]
Entree_FE_m_CIE <- TdB["CUI-CIE", "Entree_m"]
Evol_Stock_m_cui <- TdB["Somme", "Stock_m"] - TdB["Somme", "Stock_m_1"]
Evol_Stock_a_cui <- TdB["Somme", "Stock_m"] - TdB["Somme", "Stock_a_1"]
Evol_Stock_m_PEC <- TdB["PEC", "Stock_m"] - TdB["PEC", "Stock_m_1"]
Evol_Stock_a_PEC <- TdB["PEC", "Stock_m"] - TdB["PEC", "Stock_a_1"]
Evol_Stock_m_CIE <- TdB["CUI-CIE", "Stock_m"] - TdB["CUI-CIE", "Stock_m_1"]
Evol_Stock_a_CIE <- TdB["CUI-CIE", "Stock_m"] - TdB["CUI-CIE", "Stock_a_1"]

Entree_Jeunes_m_cui <- TdB_Jeunes["Somme", "Entree_m"]
Entree_Jeunes_m_PEC <- TdB_Jeunes["PEC", "Entree_m"]
Entree_Jeunes_m_CIE <- TdB_Jeunes["CUI-CIE", "Entree_m"]
Vous trouverez ci-dessous le point d’actualité mensuel sur les effectifs en contrats aidés en `r months(d_cui)` `r year(d_cui)` et en insertion par l’activité économique en `r months(d)` `r year(d)`. Pour mémoire, ce point est établi à partir des données de l’ASP, redressées pour tenir compte des délais de remontée d'informations par les employeurs. Toutes les données détaillées, ainsi que le champ et les sources, sont présentés dans le fichier excel ci-joint.
**`r params$resume`**
Le nombre de personnes entrées en **contrats aidés** en `r months(d_cui)` `r year(d_cui)` s'élèverait à `r mef(Entree_FE_m_cui)`, dont `r mef(Entree_FE_m_PEC)` en PEC et `r mef(Entree_FE_m_CIE)` en CUI-CIE. 

Le nombre total de bénéficiaires à la fin `r months(d_cui)` `r year(d_cui)` serait de `r mef(Stock_FE_cui)` (`r signe(Evol_Stock_m_cui)``r mef(Evol_Stock_m_cui)` sur un mois et `r signe(Evol_Stock_a_cui)``r mef(Evol_Stock_a_cui)` sur un an), dont `r mef(Stock_FE_PEC)` en PEC (`r signe(Evol_Stock_m_PEC)``r mef(Evol_Stock_m_PEC)` sur un mois et `r signe(Evol_Stock_a_PEC)``r mef(Evol_Stock_a_PEC)` sur un an) et `r mef(Stock_FE_CIE)` en CUI-CIE (`r signe(Evol_Stock_m_CIE)``r mef(Evol_Stock_m_CIE)` sur un mois et `r signe(Evol_Stock_a_CIE)``r mef(Evol_Stock_a_CIE)` sur un an).
Julien Blasco's avatar
Julien Blasco committed
```{r echo=FALSE}
CUI_SL$FE %>% 
  mutate(date = as_date(convertToDate(Mois))) %>% 
  filter(year(date) >= annee_cui-3 & date <= d_cui) %>% 
  pivot_longer(c(CIE_EntreeRec, PEC_EntreeRec)) %>% 
  mutate(Dispositif = factor(
    ifelse(name=="PEC_EntreeRec", "PEC", "CUI-CIE"),
    levels = c("PEC", "CUI-CIE"), ordered = TRUE)) %>% 
  mutate(
    Année = fct_rev(as.factor(year(date))),
    Mois = factor(
      months(date), ordered = TRUE, 
      levels = map_chr(months(0:11), ~months(as_date(.)))
    )
  ) %>% 
  ggplot(aes(Mois, value, col=Année, group=Année)) +
  geom_line(aes(linetype=Année)) + 
  coord_cartesian(ylim = c(0, NA), clip = 'off') +
  geom_point(data=~filter(., date==d_cui), show.legend = FALSE) +
  geom_label(
    aes(label = round(value,-2)), data=~filter(., date==d_cui),
    hjust=-0.1, show.legend = FALSE,
    ) +
  scale_linetype_manual(values=c("solid", "22", "41", "11")) +
  scale_colour_brewer(palette="Dark2") +
  labs(
    title = "Nombre d'entrées mensuelles en contrats aidés",
    caption = "Champ : France. Source : Agence de services et de paiement (ASP)"
    )
Julien Blasco's avatar
Julien Blasco committed
```

Le nombre de personnes entrées en **insertion par l'activité économique** en  `r months(d)` `r year(d)` s'élèverait à `r mef(Entree_FE_m_iae)`, pour un total de `r mef(Stock_FE_iae)` bénéficiaires à la fin `r months(d)` `r year(d)` (`r signe(Evol_Stock_m_IAE)``r mef(Evol_Stock_m_IAE)` sur un mois et `r signe(Evol_Stock_a_IAE)``r mef(Evol_Stock_a_IAE)` sur un an).
Julien Blasco's avatar
Julien Blasco committed
```{r echo=FALSE}
IAE_SL$FE %>% 
  mutate(date = as_date(convertToDate(Mois))) %>% 
  filter(year(date) >= year(d)-2 & date <= d) %>% 
Julien Blasco's avatar
Julien Blasco committed
  mutate(entrees = EntreeRec_ACI+EntreeRec_EI+entree_AI+entree_ETTI+entree_EITI) %>% 
    Année = fct_rev(as.factor(year(date))),
    Mois = factor(
      months(date), ordered = TRUE, 
      levels = map_chr(months(0:11), ~months(as_date(.)))
    )
  ) %>% 
  ggplot(aes(Mois, entrees, col=Année, group=Année)) +
  geom_line(aes(linetype=Année)) + 
  coord_cartesian(ylim = c(0, NA), clip = 'off') +
  geom_point(data=~filter(., date==d), show.legend = FALSE) +
  geom_label(aes(label = round(entrees,-2)), data=~filter(., date==d), hjust=-0.1, show.legend = FALSE) +
  scale_linetype_manual(values=c("solid", "22", "41")) +
  scale_colour_brewer(palette="Dark2") +
  labs(
    title = "Nombre d'entrées mensuelles en insertion par l'activité économique",
    caption = "Champ : France. Source : Agence de services et de paiement (ASP)"
  )
Julien Blasco's avatar
Julien Blasco committed
```

Audrey Farges's avatar
Audrey Farges committed
#### Jeunes de moins de 26 ans
`r mef(Entree_Jeunes_m_PEC)` jeunes de moins de 26 ans seraient entrés en **PEC** en `r months(d_cui)` `r year(d_cui)`, soit `r mef_pourcent(Entree_Jeunes_m_PEC/Entree_FE_m_PEC)` des entrées totales. `r mef(Entree_Jeunes_m_CIE)` jeunes de moins de 26 ans seraient entrés en **CUI-CIE** en `r months(d_cui)` `r year(d_cui)`, soit `r mef_pourcent(Entree_Jeunes_m_CIE/Entree_FE_m_CIE)` des entrées totales. Le nombre de jeunes bénéficiaires de contrats aidés s'élèverait à `r mef(TdB_Jeunes["Somme", "Stock_m"])` fin `r months(d_cui)`.
`r mef(Entree_Jeunes_m_iae)` jeunes de moins de 26 ans seraient entrés en **insertion par l'activité économique** en `r months(d)` `r year(d)`, soit `r mef_pourcent(Entree_Jeunes_m_iae/Entree_FE_m_iae)` des entrées totales. Le nombre de jeunes bénéficiaires s’élèverait à `r mef(totalJeune_IAE$Stock_m)` fin `r months(d)`.
Julien Blasco's avatar
Julien Blasco committed

### Tableaux récapitulatifs

#### Contrats aidés (en milliers de personnes)

```{r echo=FALSE}
TdB_fusion2 <- TdB_fusion
TdB_fusion2[,1] <- TdB_fusion[,3]-TdB_fusion[,1]
TdB_fusion2[,2] <- TdB_fusion[,3]-TdB_fusion[,2]
TdB_fusion2[,4] <- TdB_fusion[,5]-TdB_fusion[,4]
TdB_fusion2[,6] <- TdB_fusion[,8]-TdB_fusion[,6]
TdB_fusion2[,7] <- TdB_fusion[,8]-TdB_fusion[,7]
TdB_fusion2 <- TdB_fusion2[,c(3,2,1,5,4,8,7,6)]

Julien Blasco's avatar
Julien Blasco committed
TdB_fusion2[c(1,4,6)] <- lapply(TdB_fusion2[c(1,4,6)], round, 1)
TdB_fusion2[c(2,3,5,7,8)] <- lapply(
  TdB_fusion2[c(2,3,5,7,8)],
  function(x) paste0(signe(x), format(abs(round(x, 1)), decimal.mark=",", trim=TRUE, nsmall=1))
)

colnames(TdB_fusion2)[c(2,3,7,8)] <- paste0(
  "variation depuis ", colnames(TdB_fusion2)[c(2,3,7,8)]
)
colnames(TdB_fusion2)[5] <- paste0("variation par rapport à ", colnames(TdB_fusion2)[5])
colnames(TdB_fusion2) <- sub("\\.[1-2]", "", colnames(TdB_fusion2))

  kable(align="c", row.names = TRUE, format.args = list(decimal.mark = ',')) %>% 
  add_header_above(line=FALSE,
    c("", "Entrées mensuelles" = 3, "Entrées cumulées depuis janvier" = 2, "Stock en fin de mois" = 3),
    extra_css = "border-left: 1px solid #000; border-bottom: 1px solid #000; "
  column_spec(1, bold=TRUE) %>% 
  column_spec(c(2,5,7), border_left = TRUE, include_thead = TRUE) %>% 
  row_spec(0, extra_css = "border-bottom: 1px solid #000; ") %>% 
  row_spec(3, extra_css = "border-bottom: 1px solid #000;")

```

#### Insertion par l'activité économique (en milliers de personnes)

```{r echo=FALSE}
total_IAE2 <- total_IAE
total_IAE2[,1] <- total_IAE[,3]-total_IAE[,1]
total_IAE2[,2] <- total_IAE[,3]-total_IAE[,2]
total_IAE2[,5] <- total_IAE[,6]-total_IAE[,5]
total_IAE2[,7] <- total_IAE[,9]-total_IAE[,7]
total_IAE2[,8] <- total_IAE[,9]-total_IAE[,8]
total_IAE2 <- total_IAE2[,c(3,2,1,6,5,9,8,7)]
Julien Blasco's avatar
Julien Blasco committed
total_IAE2[c(1,4,6)] <- lapply(total_IAE2[c(1,4,6)], round, 1)
total_IAE2[c(2,3,5,7,8)] <- lapply(
  total_IAE2[c(2,3,5,7,8)],
   function(x) paste0(signe(x), format(abs(round(x, 1)), decimal.mark=",", trim=TRUE, nsmall=1))
colnames(total_IAE2)[c(2,3,7,8)] <- paste0(
  "variation par rapport à ", colnames(total_IAE2)[c(2,3,7,8)]
colnames(total_IAE2)[5] <- paste0("variation par rapport à ", colnames(total_IAE2)[5])
colnames(total_IAE2) <- sub("\\.[1-2]", "", colnames(total_IAE2))
  kable(align="c", row.names = TRUE, format.args = list(decimal.mark = ',')) %>% 
  add_header_above(line=FALSE,
    c("", "Entrées mensuelles" = 3, "Entrées cumulées depuis janvier" = 2, "Stock en fin de mois" = 3),
    extra_css = "border-left: 1px solid #000; border-bottom: 1px solid #000; "
  column_spec(1, bold=TRUE) %>% 
  column_spec(c(2,5,7), border_left = TRUE, include_thead = TRUE) %>% 
  row_spec(0, extra_css = "border-bottom: 1px solid #000;")
  
_Note :_ Les chiffres des entrées mensuelles correspondent à la somme des entrées initiales et des reconductions. Les proportions et évolutions sont calculées avec les chiffres non arrondis et peuvent donc différer des calculs effectués avec les chiffres affichés dans les tableaux.