Liebes Support Team,
in einer mehrsprachigen Befragung (3 Länder) habe ich pro Land verschiedene Quoten für Alter, Geschlecht und Bildung. Mit eurer Hilfe habe ich dafür die Quoten und Redirects programmiert.
Obwohl bis auf eine Kategorie (hohe Bildung in Brasilien) keine der Obergrenzen erreicht ist, werden aktuell für jedes Land sehr viele Leute direkt abgewiesen, da die Quote offenbar voll ist.
Leider finde ich den Fehler in meiner Syntax nicht. Kann es möglich sein, dass der if-Befehl für die Landeszuweisungen nicht richtig funktioniert? Oder dass die Definierung der unterschiedlichen Quoten für das gleiche Merkmal nicht funktioniert?
Ich wäre sehr dankbar für jede Hilfe!
// 1. Definition der Quoten
$quotaAge = [
1 => 91, // 91 Personen in Altersgruppe 1 (55-59 Jahre in Deutschland)
2 => 76, // 76 Personen in Altersgruppe 2 (60-64 Jahre in Deutschland)
3 => 222, // 233 Personen in Altersgruppe 3 (ab 65 Jahre in Deutschland)
4 => 84, // 84 Personen in Altersgruppe 4 (55-59 Jahre in den USA)
5 => 87, // 87 Personen in Altersgruppe 5 (60-64 Jahre in den USA)
6 => 229, // 229 Personen in Altersgruppe 6 (ab 65 Jahre in den USA)
7 => 206, // 206 Personen in Altersgruppe 7 (55-64 Jahre in Brasilien)
8 => 194, // 194 Personen in Altersgruppe 8 (ab 65 Jahre in Brasilien)
];
$quotaGender = [
1 => 183, // 183 in Gendergruppe 1 (männlich in Deutschland)
2 => 217, // 217 in Gendergruppe 2 (weiblich in Deutschland)
3 => 40, // 40 in Gendergruppe 3 (divers in Deutschland), nur damit sie nicht rausfallen
4 => 183, // 183 in Gendergruppe 4 (männlich in den USA)
5 => 217, // 217 in Gendergruppe 5 (weiblich in den USA)
6 => 40, // 40 in Gendergruppe 6 (divers in den USA), nur damit sie nicht rausfallen
7 => 181, // 181 in Gendergruppe 7 (männlich in Brasilien)
8 => 219, // 219 in Gendergruppe 8 (weiblich in Brasilien)
9 => 40, // 40 in Gendergruppe 9 (divers in Brasilien), nur damit sie nicht rausfallen
];
$quotaEducation = [
1 => 82, // 82 Personen in Bildungsgruppe 1 (Deutschland)
2 => 218, // 218 Personen in Bildungsgruppe 2 (Deutschland)
3 => 32, // 32 Personen in Bildungsgruppe 3 (Deutschland)
4 => 8, // 8 Personen in Bildungsgruppe 4 (Deutschland)
5 => 1, // 1 Person in Bildungsgruppe 5 (Deutschland)
6 => 1, // 1 Person in Bildungsgruppe 6 (Deutschland)
7 => 54, // 54 Personen in Bildungsgruppe 7 (Deutschland)
8 => 5, // 5 Personen in Bildungsgruppe 8 (Deutschland)
9 => 0, // 0 Personen in Bildungsgruppe 9 (Deutschland)
10 => 0, // 0 Personen in Bildungsgruppe 10 (Deutschland)
11 => 0, // 0 Personen in Bildungsgruppe 11 (Deutschland)
12 => 40, // 40 Personen in Bildungsgruppe 12 (Deutschland) offen (damit es nicht rausfällt)
13 => 42, // 42 Personen in Bildungsgruppe 13 (USA)
14 => 124, // 124 Personen in Bildungsgruppe 14 (USA)
15 => 62, // 62 Personen in Bildungsgruppe 15 (USA)
16 => 39, // 39 Personen in Bildungsgruppe 16 (USA)
17 => 77, // 77 Personen in Bildungsgruppe 17 (USA)
18 => 40, // 40 Personen in Bildungsgruppe 18 (USA)
19 => 16, // 16 Personen in Bildungsgruppe 19 (USA)
20 => 0, // 0 Personen in Bildungsgruppe 20 (USA)
21 => 0, // 0 Personen in Bildungsgruppe 21 (USA)
22 => 0, // 0 Personen in Bildungsgruppe 22 (USA)
23 => 0, // 0 Personen in Bildungsgruppe 23 (USA)
24 => 40, // 40 Personen in Bildungsgruppe 24 (USA) offen (damit es nicht rausfällt)
25 => 238, // 238 Personen in Bildungsgruppe 25 (Brasilien) gering
26 => 101, // 101 Personen in Bildungsgruppe 26 (Brasilien) mittel
27 => 61, // 61 Personen in Bildungsgruppe 27 (Brasilien) hoch
28 => 40, // 40 Personen in Bildungsgruppe 28 (Brasilien) offen (damit es nicht rausfällt)
];
// 2. Merkmale auslesen und umkodieren
// Das Alter wird umkodiert
$age = value('SD01_01');
if ($age < 55)
{
redirect('https://gateway.gapfish.com/routings/participation_id/finish/screenout');
}
if (value('LANGUAGE') == 'ger') {
// Deutschland
if ($age < 60) {
$ageGroup = 1;
} elseif ($age < 65) {
$ageGroup = 2;
} elseif ($age >= 65) {
$ageGroup = 3;
}
} elseif (value('LANGUAGE') == 'eng') {
// USA
if ($age < 60) {
$ageGroup = 4;
} elseif ($age < 65) {
$ageGroup = 5;
} elseif ($age >= 65) {
$ageGroup = 6;
}
} elseif (value('LANGUAGE') == 'por') {
// Brasilien
if ($age < 65) {
$ageGroup = 7;
} elseif ($age >= 65) {
$ageGroup = 8;
}
}
//Geschlecht wird umkodiert
$gender = value('Gender');
if (value('LANGUAGE') == 'ger') {
// Deutschland
if($gender = 1){
$genderGroup = 1;
}elseif($gender = 2){
$genderGroup = 2;
}elseif($gender = 3){
$genderGroup = 3;
}
} elseif (value('LANGUAGE') == 'eng') {
// USA
if($gender = 1){
$genderGroup = 4;
}elseif($gender = 2){
$genderGroup = 5;
}elseif($gender = 3){
$genderGroup = 6;
}
} elseif (value('LANGUAGE') == 'por') {
// Brasilien
if($gender = 1){
$genderGroup = 7;
}elseif($gender = 2){
$genderGroup = 8;
}elseif($gender = 3){
$genderGroup = 9;
}
}
//Bildung wird umkodiert
$education = value('Edu');
if (value('LANGUAGE') == 'ger') {
// Deutschland
if($education = 1){
$educationGroup = 1;
}elseif($education = 2){
$educationGroup = 2;
}elseif($education = 3){
$educationGroup = 3;
}elseif($education = 4){
$educationGroup = 4;
}elseif($education = 5){
$educationGroup = 5;
}elseif($education = 6){
$educationGroup = 6;
}elseif($education = 7){
$educationGroup = 7;
}elseif($education = 8){
$educationGroup = 8;
}elseif($education = 9){
$educationGroup = 9;
}elseif($education = 10){
$educationGroup = 10;
}elseif($education = 11){
$educationGroup = 11;
}elseif($education = 12){
$educationGroup = 12;
}
} elseif (value('LANGUAGE') == 'eng') {
// USA
if($education = 1){
$educationGroup = 13;
}elseif($education = 2){
$educationGroup = 14;
}elseif($education = 3){
$educationGroup = 15;
}elseif($education = 4){
$educationGroup = 16;
}elseif($education = 5){
$educationGroup = 17;
}elseif($education = 6){
$educationGroup = 18;
}elseif($education = 7){
$educationGroup = 19;
}elseif($education = 8){
$educationGroup = 20;
}elseif($education = 9){
$educationGroup = 21;
}elseif($education = 10){
$educationGroup = 22;
}elseif($education = 11){
$educationGroup = 23;
}elseif($education = 12){
$educationGroup = 24;
}
} elseif (value('LANGUAGE') == 'por') {
// Brasilien
if($education = 1){
$educationGroup = 25;
}elseif($education < 5){
$educationGroup = 26;
}elseif($education < 12){
$educationGroup = 27;
}elseif($education = 12){
$educationGroup = 28;
}
}
// 3. Zählung der vorliegenden Fälle
//Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge = statistic('count', 'SD14_01', $ageGroup);
$casesGender = statistic('count', 'SD14_02', $genderGroup);
$casesEducation = statistic('count', 'SD14_03', $educationGroup);
//Screenout
if(! array_key_exists($ageGroup, $quotaAge)||
! array_key_exists($genderGroup, $quotaGender)||
! array_key_exists($educationGroup, $quotaEducation)){
redirect('https://gateway.gapfish.com/routings/participation_id/finish/screenout');
}
//Auslesen der Quoten für die angegebenen Merkmale
$maxPerAge = $quotaAge[$ageGroup];
$maxPerGender = $quotaGender[$genderGroup];
$maxPerEducation = $quotaEducation[$educationGroup];
//Quotenstopp
if(($casesAge >= $maxPerAge)||($casesGender >= $maxPerGender)||($casesEducation >= $maxPerEducation)){
redirect('https://gateway.gapfish.com/routings/%reference%/finish/quota_full');
}