Verwenden von Spalten als VariableHallo zusammen !
Dies ist mein erster Beitrag, aber hoffentlich nicht der letzte!
Ich arbeite an den Verkostungsergebnissen. Verkoster ordnen Proben in verschiedene Gruppen ein, wenn der Buchstabe gleich ist, befinden sich Proben in derselben Gruppe. die erste spalte ist die ref der probe und danach habe ich eine spalte nach taster. Ich habe so eine Tabelle:
NUM ECH D1 D2 D3
123 A A B
234 A B B
345 BC
Ich möchte eine neue Tabelle nach Verkostern haben, mit 0, wenn Proben in derselben Gruppe sind, und 1, wenn sie es nicht sind.
Für den ersten Vorgeschmack ist die neue Tabelle:
NUM ECH 123 234 345
123 0 0 1
234 0 0 1
345 1 1 0
Ich habe keine Mühe, diese neue Tabelle für einen Verkoster zu erstellen, aber ich möchte für alle Verkoster, also für alle Kolumnen. Am Ende muss ich die gesamte Tabelle summieren, um einen Abstand zwischen den Proben zu haben.
Dafür weiß ich nicht wirklich, wie man Spalten als Variable verwendet, ob es möglich ist oder nicht ...
Kannst du mir helfen ?
Ich fange an, in JMP zu scripten!
Danke für Ihre Hilfe !
Margaux
DatentabelleBetreff: Spalten als Variable verwendenVielen Dank, es funktioniert einwandfrei!
Tatsächlich ist die letzte Schleife nützlich.
Ich habe Vector noch nie benutzt, das ist eine gute Hilfe!
Betreff: Spalten als Variable verwenden@MargauxR ,
Das erste Skript, das ich angehängt habe, hat Ihr erklärtes Ziel nicht erreicht.Wenn diese Tabelle Ihren Anforderungen entspricht, ist das geänderte Skript beigefügt.
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 iBetreff: Spalten als Variable verwendenHallo zusammen
Ich habe immer noch ein Problem. Ich habe versucht, den Code ein wenig zu ändern, da meine Gruppen je nach Geschmack anders heißen werden.
Es funktioniert fast, aber ich habe ein Problem mit der Wiederholung. Wenn der Verkoster mehrere Proben in die gleiche Gruppe, also mit dem gleichen "Namen" legt, fügt das Skript mehrere Zeilen hinzu, je nachdem, wie oft der Name wiederholt wird.
Am und möchte ich nur eine Zeile pro Beispiel.
Ich kann nicht finden, wo der Mystake ist ...
Ich mache das Skript auf dem Tisch „Schnupper“ und das Ergebnis ist „Schnupper Match 3“
Kannst du mir helfen ?
Betreff: Spalten als Variable verwenden@gzmorgan0
Ich danke Ihnen sehr für Ihre Antwort ! es scheint zu funktionieren! Ich habe nicht daran gedacht, so zu arbeiten ...
Ich werde morgen meine Tablea anprobieren, ich werde dir sagen, ob alles gut ist.
Was meinen Tisch betrifft, habe ich es mir leichter gemacht, als es ist. Tatsächlich entspricht jeder Buchstabe einer Wortgruppe, um die Gruppe zu beschreiben. Aber diesen Teil schaffe ich 
Danke nochmal !
Betreff: Spalten als Variable verwenden@MargauxR ,
Ihr Problem war interessant, obwohl ich Ihre resultierende Tabelle seltsam fand: Sie verliert die Klassen-/Gruppenwerte!
Taster D1 und D5 könnten die Proben identisch gruppieren, aber D1 gibt ihnen ein A und D5 ein C?
Nun ja!Ich habe deine Beispieltabelle erweitert. Diese Tabelle und das Skript sind beigefügt. Ich denke es macht was du willst.
Wenn Sie neu bei JSL sind, müssen Sie Hilfe > Scripting-Index verwenden, um JSL-Tabellenmeldungen wie Get Rows Where() und Add Rows, ncol(dt), Sort usw. nachzuschlagen.

