- Posts: 5
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Calcul sur les réponses précédentes dans un tableau
- AudreyEQ
- Topic Author
- Offline
- New Member
Less
More
7 years 8 months ago #138353
by AudreyEQ
Calcul sur les réponses précédentes dans un tableau was created by AudreyEQ
Bonjour !
Après avoir pas mal cherché sur le forum et dans le manuel, je ne parviens pas à trouver une solution à mon problème (à noter que je débute sur LS et que c'est mon premier questionnaire).
Pour vous exposer un peu là où j'en suis :
J'ai 21 questions au format "tableau" avec une ou plusieurs sous-questions (jusqu'à 11) et 11 réponses possibles (de 0 à 10). Au total j'ai 47 sous-questions.
Je souhaite récupérer la valeur (de 0 à 10) de la réponse pour chaque sous-réponse afin d'afficher la moyenne à la fin du questionnaire et j'ai deux soucis :
J'espère avoir été suffisamment claire pour que ça soit compréhensible et j'espère que vous pourrez m'aider.
Bonne journée (soirée).
Après avoir pas mal cherché sur le forum et dans le manuel, je ne parviens pas à trouver une solution à mon problème (à noter que je débute sur LS et que c'est mon premier questionnaire).
Pour vous exposer un peu là où j'en suis :
J'ai 21 questions au format "tableau" avec une ou plusieurs sous-questions (jusqu'à 11) et 11 réponses possibles (de 0 à 10). Au total j'ai 47 sous-questions.
Je souhaite récupérer la valeur (de 0 à 10) de la réponse pour chaque sous-réponse afin d'afficher la moyenne à la fin du questionnaire et j'ai deux soucis :
- Pour ma moyenne j'utilise la fonction {round(sum(P2A_SQ001.NAOK, P2A_SQ002.NAOK, ...)/47, 1)}. Cependant pour certaines de mes sous-questions la réponse doit être "inversée" (si on me réponds "8" je dois le compter comme un "2") et j'ai tenté de faire {round(sum((10-P2A_SQ001.NAOK), P2A_SQ002.NAOK, ...)/47, 1)} en appliquant le "(10- )" aux sous-questions concernées mais sans succès. Le logiciel m'affiche "NAN" à la place du résultat.
- Mon autre problème c'est que mes tableau ont des possibilités de réponses allant de 0 à 11 et donc si le répondant coche "0" ça équivaut à "1" dans mon calcul. Soucis que je pourrai résoudre en bidouillant l'expression si elle fonctionnait...
J'espère avoir été suffisamment claire pour que ça soit compréhensible et j'espère que vous pourrez m'aider.
Bonne journée (soirée).
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13907
- Thank you received: 2546
7 years 8 months ago - 7 years 8 months ago #138358
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Calcul sur les réponses précédentes dans un tableau
Tiens bizarre ce NAN
Mais sinon:
Peux passer
Ou bien :
En tous cas ca reste que des Maths.
Le seul truc bizarre c'est le NAN : c'est quelle version et buildnumber ?
Denis
PS : nouvelle correction
sum(
(if(P2A_SQ002.NAOK<11,sum(P2A_SQ002.NAOK,1),0)
(if(P2A_SQ003.NAOK<11,10-sum(P2A_SQ002.NAOK,1),0)
)/
sum(
(if(P2A_SQ002.NAOK<11,1,0)
(if(P2A_SQ003.NAOK<11,1,0)
)
Mais sinon:
Code:
sum((10-intval(P2A_SQ001.NAOK)...
Peux passer
Ou bien :
Code:
sum( sum(P2A_SQ002.NAOK,P2A_SQ003.NAOK)/count(P2A_SQ002.NAOK,P2A_SQ003.NAOK), 10*count(P2A_SQ001.NAOK,P2A_SQ004.NAOK), -1*(sum(P2A_SQ001.NAOK,P2A_SQ004.NAOK)/count(P2A_SQ001.NAOK,P2A_SQ004.NAOK)) )
En tous cas ca reste que des Maths.
Le seul truc bizarre c'est le NAN : c'est quelle version et buildnumber ?
Denis
PS : nouvelle correction
sum(
(if(P2A_SQ002.NAOK<11,sum(P2A_SQ002.NAOK,1),0)
(if(P2A_SQ003.NAOK<11,10-sum(P2A_SQ002.NAOK,1),0)
)/
sum(
(if(P2A_SQ002.NAOK<11,1,0)
(if(P2A_SQ003.NAOK<11,1,0)
)
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Last edit: 7 years 8 months ago by DenisChenu. Reason: update with if
The topic has been locked.
- AudreyEQ
- Topic Author
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
7 years 8 months ago - 7 years 8 months ago #138366
by AudreyEQ
Replied by AudreyEQ on topic Calcul sur les réponses précédentes dans un tableau
Bonjour et merci pour la réponse !
J'ai essayé avec (10-intval(P2A_SQ001.NAOK)) et je n'ai plus le NAN. Mon résultat n'est pas bon mais il faut que j'applique ma correction pour que le "1" soit bien compté comme un "1" et pas un "2".
EDIT : à quoi correspond le "intval" ?
La deuxième proposition me semble un peu trop fastidieuse pour 47 réponses mais que signifie le ",1" à l'intérieur de la parenthèse de la somme dans "(if(P2A_SQ002.NAOK<11,sum(P2A_SQ002.NAOK,1),0)".
Autre petite question pour satisfaire ma curiosité : que signifie le .NAOK ?
Et pour répondre à la question sur la version, je travaille avec la Version 2.00 + Build 130913
J'ai essayé avec (10-intval(P2A_SQ001.NAOK)) et je n'ai plus le NAN. Mon résultat n'est pas bon mais il faut que j'applique ma correction pour que le "1" soit bien compté comme un "1" et pas un "2".
EDIT : à quoi correspond le "intval" ?
La deuxième proposition me semble un peu trop fastidieuse pour 47 réponses mais que signifie le ",1" à l'intérieur de la parenthèse de la somme dans "(if(P2A_SQ002.NAOK<11,sum(P2A_SQ002.NAOK,1),0)".
Autre petite question pour satisfaire ma curiosité : que signifie le .NAOK ?
Et pour répondre à la question sur la version, je travaille avec la Version 2.00 + Build 130913
Last edit: 7 years 8 months ago by AudreyEQ.
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13907
- Thank you received: 2546
7 years 8 months ago - 7 years 8 months ago #138370
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Calcul sur les réponses précédentes dans un tableau
Salut,
Version 2.00 : ceci explique le NAN
Pour le fastidieux :
- tu peux gérer tes codes de sous questions et utiliser self.sq_SN.NAOK et self.sq_SA.NAOK (N pour normal, A pour Anormal), et faire des sumifop plutot quer des sum.
- Tu peux le faire sur LibreOffice calc et copier coller l'équation
Tu as quand même :
- 47 sous questions différentes
- 2 types de sous question (inversée et non)
- Un code qui ne correspond pas au calcul (il suffisait de mettre 1 à 10 et NA pour faciliter les calculs)
Ceci explique le fastidieux ...
Le 2ème test sert à compter : une moyenne se fait sur le nombre de valeurs, comme tu retire certaines valeurs : ce n'est pas sur 47. C'est des maths, pas du LimeSurvey.
Denis
Version 2.00 : ceci explique le NAN
Pour le fastidieux :
- tu peux gérer tes codes de sous questions et utiliser self.sq_SN.NAOK et self.sq_SA.NAOK (N pour normal, A pour Anormal), et faire des sumifop plutot quer des sum.
- Tu peux le faire sur LibreOffice calc et copier coller l'équation
Tu as quand même :
- 47 sous questions différentes
- 2 types de sous question (inversée et non)
- Un code qui ne correspond pas au calcul (il suffisait de mettre 1 à 10 et NA pour faciliter les calculs)
Ceci explique le fastidieux ...
Le 2ème test sert à compter : une moyenne se fait sur le nombre de valeurs, comme tu retire certaines valeurs : ce n'est pas sur 47. C'est des maths, pas du LimeSurvey.
Denis
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Last edit: 7 years 8 months ago by DenisChenu.
The topic has been locked.
- AudreyEQ
- Topic Author
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
7 years 8 months ago #138371
by AudreyEQ
Replied by AudreyEQ on topic Calcul sur les réponses précédentes dans un tableau
Merci Denis !
Je suis toujours dessus...
Au début j'avais fait des questions avec réponses numériques (bloquées de 0 à 10) donc c'était plus simple mais ça ne convient pas à mon commanditaire. Et c'est en passant en mode tableau que les problèmes se sont multipliés.
Par contre j'ai du mal m'exprimer parce que ma moyenne se fait bien sur 47. Je ne retire pas des valeurs, je veux juste leur appliquer une correction.
En fait mes questions sont du type "vous vous sentez..." avec des réponses type "joyeux", "en bonne santé" etc. ("0" = "pas du tout" et "10" = "tout à fait") MAIS dans le lot j'ai des réponses comme "triste" ou "maussade" et pour celle-ci je veux la note soit inversée. En gros si le répondant se sens bien la note augmente et s'il se sent mal : elle diminue. D'où mon histoire d'inverse mais au final j'ai quand même 47 valeurs avec lesquelles je veux faire une moyenne.
Là en fait j'ai plusieurs options :
Je ne connais pas encore assez bien le langage pour arriver à vraiment bidouiller comme je veux
Je suis toujours dessus...
Au début j'avais fait des questions avec réponses numériques (bloquées de 0 à 10) donc c'était plus simple mais ça ne convient pas à mon commanditaire. Et c'est en passant en mode tableau que les problèmes se sont multipliés.
Par contre j'ai du mal m'exprimer parce que ma moyenne se fait bien sur 47. Je ne retire pas des valeurs, je veux juste leur appliquer une correction.
En fait mes questions sont du type "vous vous sentez..." avec des réponses type "joyeux", "en bonne santé" etc. ("0" = "pas du tout" et "10" = "tout à fait") MAIS dans le lot j'ai des réponses comme "triste" ou "maussade" et pour celle-ci je veux la note soit inversée. En gros si le répondant se sens bien la note augmente et s'il se sent mal : elle diminue. D'où mon histoire d'inverse mais au final j'ai quand même 47 valeurs avec lesquelles je veux faire une moyenne.
Là en fait j'ai plusieurs options :
- J'arrive à faire ma somme avec les valeurs voulues (inversées et non-inversées) mais avec une échelle de 1 à 11 plutôt que de 0 à 10. Je peux soustraire 47 à ma somme (en considérant qu'à chaque sous-question j'ai une valeur supérieure de 1 à ce que je veux vraiment) avant de faire ma moyenne mais je n'arrive pas à récupérer la valeur de la somme pour le lui appliquer. Le but serait d'avoir qqc du genre ((SOMME)-47)/47
- J'applique le correctif dans mon expression pour chaque sous-réponse sous la forme "(1- P2S_SQ001)" pour les valeurs à conserver telle qu'elle et "(11-intval(P2S_SQ001))" pour les réponses à inverser. Sauf que le "(1- REPONSE)" ne fonctionne pas.
Je ne connais pas encore assez bien le langage pour arriver à vraiment bidouiller comme je veux
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13907
- Thank you received: 2546
7 years 8 months ago #138376
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Calcul sur les réponses précédentes dans un tableau
Salut,
OK je suis pas sur pour le inverse en fait :
10-intval(P2A_SQ001.NAOK) va faire 1 pour 11 et 9 pour 1 : c'est ce que tu veux ?
OK je suis pas sur pour le inverse en fait :
10-intval(P2A_SQ001.NAOK) va faire 1 pour 11 et 9 pour 1 : c'est ce que tu veux ?
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13907
- Thank you received: 2546
7 years 8 months ago #138377
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Calcul sur les réponses précédentes dans un tableau
A propos : intval : force en partie entière , même un caractère.
Denis
Denis
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
- AudreyEQ
- Topic Author
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
7 years 8 months ago #138386
by AudreyEQ
C'est bien ce que je veux.
J'ai finalement trouvé une solution. J'ai remplacé mes tableau par des curseurs que j'ai paramétré de 0 à 10 du coup plus de soucis et pour mes valeurs inverses j'ai appliqué l'expression que tu m'as donnée. Encore merci pour le coup de main !
Replied by AudreyEQ on topic Calcul sur les réponses précédentes dans un tableau
DenisChenu wrote: Salut,
OK je suis pas sur pour le inverse en fait :
10-intval(P2A_SQ001.NAOK) va faire 1 pour 11 et 9 pour 1 : c'est ce que tu veux ?
C'est bien ce que je veux.
J'ai finalement trouvé une solution. J'ai remplacé mes tableau par des curseurs que j'ai paramétré de 0 à 10 du coup plus de soucis et pour mes valeurs inverses j'ai appliqué l'expression que tu m'as donnée. Encore merci pour le coup de main !
The topic has been locked.
Moderators: Nickko