7  Prendre en compte une variable hiérarchique

Niveau facile

Reprenons ici l’exemple de la variable geo qui est une variable hiérarchique puisqu’il existe des emboîtements entre les différents niveaux.

flowchart TD
A[Pays] --> B[Nord]
A --> C[Ouest]
A --> D[Est]
A --> E[Sud]
B --> F[N1]
B --> G[N2]
B --> H[N3]
C --> I[O1]
C --> J[O2]
C --> K[O3]
C --> L[O4]
D --> M[E1]
D --> N[E2]
D --> O[E3]
E --> P[S1]
E --> Q[S2]

Pour prendre en compte cette hiérarchie il faut d’abord pouvoir la représenter de telle sorte que Tau-Argus comprenne les différents emboîtements présents.

7.1 Première option

La première option consiste à créer le fichier nécessaire (extension .hrc) à la main. Ceci est tout à fait pertinent si la hiérarchie n’est pas trop étendue.

Tau-Argus attend en effet un type de fichier bien particulier, dont l’extension est .hrc. Il s’agit d’un simple fichier texte où les différents emboîtements sont écrits les uns en-dessous des autres. Un symbole (le @) est utilisé pour préciser le niveau de chacun des emboîtements au sein de la hiérarchie.

Dans notre exemple on écrirait le fichier de la façon suivante :

Nord
@N1
@N2
@N3 
Ouest 
@O1 
@O2 
@O3 
@O4 
Est
@E1 
@E2 
@E3 
Sud 
@S1 
@S2

On remarque que le total Pays n’est pas inclus dans le fichier .hrc c’est parce qu’il ne faut pas indiquer le super-total de la hiérarchie à Tau-Argus.

7.2 Seconde option

Quand la hiérarchie est très étendue, l’écriture manuelle du fichier de hiérarchie est pénible. Or, quand ce genre de cas se présente, il existe souvent une table de correspondance permettant d’associer les différents niveaux entre eux.

Nous appelons table de correspondance une table qui précise l’ensemble des niveaux associés aux emboîtements les plus fins.

La table de correspondance représentant la hiérarchie ci-dessus est la suivante:

pays_corr_table <- tibble(
  niv0 = "Pays",
  niv1 = c(rep("Nord",3),rep("Ouest",4),rep("Est",3), rep("Sud",2)),
  niv2 = c(paste0("N",1:3),paste0("O",1:4),paste0("E",1:3), paste0("S",1:2))
)
pays_corr_table
# A tibble: 12 × 3
   niv0  niv1  niv2 
   <chr> <chr> <chr>
 1 Pays  Nord  N1   
 2 Pays  Nord  N2   
 3 Pays  Nord  N3   
 4 Pays  Ouest O1   
 5 Pays  Ouest O2   
 6 Pays  Ouest O3   
 7 Pays  Ouest O4   
 8 Pays  Est   E1   
 9 Pays  Est   E2   
10 Pays  Est   E3   
11 Pays  Sud   S1   
12 Pays  Sud   S2   

Avec la fonction write_hrc2() du package rtauargus, on peut transformer la table de correspondance en un fichier hrc.

write_hrc2(pays_corr_table %>% select(-niv0), file_name = "hrc/pays_TA_2.hrc")

Remarque: La fonction rtauargus::write_hrc2() n’accepte pas de valeurs manquantes dans la table en entrée. Lorsqu’une hiérarchie n’a pas la même nombre de sous-niveaux selon les branches on répète la modalité du niveau supérieur sur les niveaux inférieurs pour ne pas avoir de cases vides.

Exemple : pour la hiérarchie ci-dessous on répète la modalité C dans la table de correspondance.

flowchart TD
A[Total] --> B[A]
A --> C[B]
A --> D[C]
B --> E[A1]
B --> F[A2]
C --> G[B1]
C --> H[B2]
H --> I[B21]
H --> J[B22]

corr_tab <- tibble(
  niv0 = "ALL",
  niv1 = c(rep("A",2),rep("B",3), "C"),
  niv2 = c("A1","A2","B1",rep("B2",2), "C"),
  niv3 = c("A1","A2","B1", "B21", "B22", "C")
)
corr_tab
# A tibble: 6 × 4
  niv0  niv1  niv2  niv3 
  <chr> <chr> <chr> <chr>
1 ALL   A     A1    A1   
2 ALL   A     A2    A2   
3 ALL   B     B1    B1   
4 ALL   B     B2    B21  
5 ALL   B     B2    B22  
6 ALL   C     C     C