Utiliser des colonnes comme variableBonjour tous le monde !
C'est mon premier post, mais pas le dernier j'espère !
Je travaille sur les résultats de dégustation. Les dégustateurs placent les échantillons dans différents groupes, si la lettre est la même, les échantillons sont dans le même groupe. la première colonne est la ref de l'échantillon et après j'ai une colonne par dégustateur. J'ai un tableau comme ça :
NUM ECH D1 D2 D3
123 A A B
234 A B B
345 B B C
J'aimerais avoir un nouveau tableau par dégustateur, avec 0 si les échantillons sont dans le même groupe et 1 s'ils ne le sont pas.
Pour le premier dégustateur la nouvelle table est :
NUMECH 123 234 345
123 0 0 1
234 0 0 1
345 1 1 0
Je n'ai aucun mal à créer ce nouveau tableau pour un dégustateur, mais je voudrais tous les dégustateurs, donc pour toutes les colonnes. À la fin, je dois additionner tout le tableau pour avoir la distance entre les échantillons.
Pour cela, je ne sais pas trop comment utiliser les colonnes comme variable, si c'est possible ou non...
Pouvez-vous m'aider ?
je commence à scripter dans JMP !
Merci de votre aide !
Margaux
Tableau de donnéesRe : Utiliser des colonnes comme variablesMerci beaucoup, cela fonctionne parfaitement !
En fait, la dernière boucle est utile.
Je n'ai jamais utilisé de vecteur auparavant, c'est une bonne aide !
Re : Utiliser des colonnes comme variables@MargauxR ,
Le premier script que j'ai joint n'a pas atteint votre objectif déclaré.Si ce tableau répond à vos besoins, le script modifié est joint.
dt = Data Table("Tasters");
samples = dt:NUM ECH << get values;
nsamp = nitems(samples);
dtnew = New Table("Taster Match", New Column("Taster", Character),
New Column("NUM ECH", character));
for(l=1, l<= nsamp, l++,
dtnew << New Column(samples[l], Numeric)
);
vec = J(nsamp, 1, 1);
//get taster info
currRow = 0;
for(i= 2, i<=ncol(dt), i++,
tester = column(dt,i) << get name;
for(j = 1, j<=nsamp, j++,
idx = dt << get rows where (column(dt,i)[]==column(dt,i)[Row()=j]);
nr = nrow(idx);
tvec = vec;
if(nr > 0,
tvec[idx] = 0;
);
dtnew << add row(1);
currRow++;
dtnew:Taster[currRow] = tester;
dtnew:NUM ECH[currRow] = samples[j];
//write out results
dtnew[currRow,3::nsamp+2] = Transpose(tvec);
); //end for j
); // end for iRe : Utiliser des colonnes comme variableBonjour tous le monde
J'ai toujours un problème. J'ai essayé de changer un peu le code, car mes groupes seront nommés différemment selon les dégustateurs.
Cela fonctionne presque, mais j'ai un problème de répétition. Si le dégustateur a mis plusieurs échantillons dans un même groupe, donc avec le même "nom", le script ajoutera plusieurs lignes, en fonction du nombre de fois que le nom est répété.
Au et, je veux juste une ligne par échantillon.
Je ne trouve pas où est le mystake...
Je fais le script sur la table "tasters" et le résultat est "taster match 3"
Pouvez-vous m'aider ?
Re : Utiliser des colonnes comme variable@gzmorgan0
Merci beaucoup pour votre réponse ! ça a l'air de marcher ! Je ne pensais pas travailler comme ça...
J'essaierai sur ma tablea demain, je vous dirai si tout est bon.
À propos de ma table, je l'ai rendue plus facile qu'elle ne l'est. En fait, chaque lettre correspond à un groupe de mots pour décrire le groupe. Mais je peux gérer cette partie 
Merci encore !
Re : Utiliser des colonnes comme variable@MargauxR ,
Votre problème était intéressant, même si j'ai trouvé étrange votre tableau résultant : il perd les valeurs de grade/groupe !
Les dégustateurs D1 et D5 peuvent regrouper les échantillons de manière identique mais D1 leur attribue un A et D5 un C ?
Tant pis!J'ai élargi votre exemple de tableau. Ce tableau et le script sont joints. Je pense que ça fait ce que tu veux.
Si vous débutez avec JSL, vous devez utiliser Help>Scripting Index pour rechercher des messages de table JSL tels que Get Rows Where() et Add Rows, ncol(dt), Sort, etc.

