Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
j'ai un fichier csv source provenant des réponses à un questionnaire.
Pour l'une des questions, les répondants devaient choisir entre 1 et 4 termes/phrases qui leur étaient proposés. Au final, ceci se retranscris pour moi dans une chaine de ce type (et ce pour chaque ligne correspondant à un répondant)
Chaque terme/phrase est séparé par un "|" et en plus il peut y avoir des caractères comme "?" , des guillemets etc... Un même terme/phrase ne puet apparaître qu'une et une seule fois pour une ligne correspondant à un répondant.
Ci-joint un fichier exemple :
J'aimerais, pour chaque terme/phrase pour avoir le nombre de fois où il a été choisie par les répondants en le ventilant par l'âge des répondants (champ "Q2: Age?"
J'ai essayé la fonction substringCount mais ce n'est valable que pour une chaine précise et là, les chaines varient forcément pour chaque ligne .
Merci d'avance pour votre aide
Cdt,
Stéphane
Bonjour,
Regarde ces discussions, ca peut peut etre t'interesser.
Bonne journee
Bonjour Boris,
Désolé pour ce retard derrière ton message.
J'ai en effet regardé ces discussions et finalement cela ne m'a pas aidé. La seconde discussion marche parfaitement mais pour une chaine de caractère définie. Je n'ai pas réussi à l'appliquer à l'ensemble des chaines de caractères pouvant faire partie d'une des colonnes d'une table de mon modèle.
Au final, il m'a été plus simple d'intervenir sur les données en amont de mon modèle QlikView.
Merci en tout cas pour ce lien vers ces discussions
Bonne journée
Bonjour,
Peut-être la solution consiste-t-elle à travailler sur le script en générant un champs réponse qui contient une seule réponse.
Exemple sur ton fichier en prenant le cas d'un maxi de 3 réponses
LOAD
CLE_ID,
"Q2:âge ?",
"Q15:qualités ?",
textbetween("Q15:qualités ?",'|','|') as Rep
// textbetween("Q15:qualités ?",'|','|',2) as Rep2,
// textbetween("Q15:qualités ?",'|','|',3) as Rep3
FROM [lib://AttachedFiles/exemple données.xlsx]
(ooxml, embedded labels, table is Sheet1);
concatenate
LOAD
CLE_ID,
"Q2:âge ?",
"Q15:qualités ?",
textbetween("Q15:qualités ?",'|','|',2) as Rep
FROM [lib://AttachedFiles/exemple données.xlsx]
(ooxml, embedded labels, table is Sheet1);
concatenate
LOAD
CLE_ID,
"Q2:âge ?",
"Q15:qualités ?",
textbetween("Q15:qualités ?",'|','|',3) as Rep
FROM [lib://AttachedFiles/exemple données.xlsx]
(ooxml, embedded labels, table is Sheet1);
L'inconvénient l'on multiplie les enregistrements.
Pour 4 choix possibles
ajouter
concatenate
LOAD
CLE_ID,
"Q2:âge ?",
"Q15:qualités ?",
textbetween("Q15:qualités ?",'|','|',4) as Rep
FROM [lib://AttachedFiles/exemple données.xlsx]
(ooxml, embedded labels, table is Sheet1);
Bonjour,
Vous connaissez les réponses possibles, vous pouvez donc les charger dans une table à part, sans lien avec la table des résulat. Admettons que vous les chargiez dans le champ nommé ReponsesPossibles (J'en ai peut être oublié):
Ensuite, vous pouvez comptabiliser le nombre de réponse en utilisant la formule suivante basé sur la fonction Subfield qui permet de décomposer une chaine de caractère en indiquant le séparateur :
SUM(IF(WildMatch(ReponsesPossibles,Subfield([Q15:qualités ?],'|',1),Subfield([Q15:qualités ?],'|',2),Subfield([Q15:qualités ?],'|',3),Subfield([Q15:qualités ?],'|',4))>0,1,0))
J'obtiens le résultat suivant :
Cdlt