Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Vielen Dank, Jim!
Der erste Weg, wie ich darüber nachdenken werde, ist, wenn Sie viele Daten in einer Reihe haben, können Sie den Speicher verwenden, um dies schneller zu tun.Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Und ich werde dich noch einmal fragen, ich habe die erste Methode ausprobiert und es gibt kein Ergebnis. Ich weiß nicht, wo ich einen Fehler gemacht habe, danke!Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Das Ergebnis der ersten Codeoperation
Vielen Dank!

Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Ich bin ein wenig verwirrt von dem, was du meinst, wenn du sagst " direkt ohne Zugabe von Hilfssäulen erhalten "; Ich habe 2 einfache Skripte zusammengestellt. Die erste Anweisung folgt genau Ihrer Aussage, da sie keine unnötigen Spalten erzeugt, um die Ergebnisse zu erzielen. Diese Methode ist jedoch ineffizient und lässt sich nicht sehr gut skalieren, wenn die Datentabellen groß werden
Names Default To Here( 1 );
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
// Create the new column by comparing values between the data tables
d2 << New Column( "Result",
formula(
compare = d1:yield[((d1 <<
get rows where(
d1:popcorn == d2:popcorn & d1:oil amt == d2:oil amt &
d1:batch == d2:batch ))[Row()])];
If( compare > d2:yield[Row()],
theResult = 1,
theResult = 0
);
theResult;
)
);
// Change the values of the column Result to static values by removing
// the formula
d2:Result << delete property( "formula" );
Das zweite Beispiel ist sehr effizient, verwendet jedoch temporäre zusätzliche Spalten, die Ergebnisse sind jedoch gleich:
Names Default To Here( 1 );
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
// Temp. change of the name of the Yield column in data table 1
d1:yield << set name("yield1");
// Copy the Yield1 column to data table 2
d2 << Update(
With( d1 ),
Match Columns( :popcorn = :popcorn, :oil amt = :oil amt, :batch = :batch ),
Add Columns from Update table( :yield1 )
);
// Change the Yield1 column in data table 1 back to it's original name
d1:yield1 << set name("yield");
// Create and calculate the Result column in data table 2
d2 << new column("Result", formula(
If(:yield1 > :yield, 1,0);
));
// Change the values of the column Result to static values by removing
// the formula
d2:Result << delete property( "formula" );
// Delete the no longer needed Yield1 column
d2<<DELETE columns=""></DELETE>
Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Hallo zusammen!
Die Ausbeute der beiden Tabellen der gleichen Spezifikation ist unterschiedlich.
Kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden:
Die Ergebnisse werden in Tabelle 2 erhalten: Wenn die Ausbeute in Tabelle 1 größer als die in Tabelle 2 ist, ist das Ergebnis 1; Andernfalls ist das Ergebnis 0.
d1 = Open( "$SAMPLE_DATA/Trial1.jmp" );
d2 = Open( "$SAMPLE_DATA/Trial2.jmp" );
Vielen Dank!
Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Welche Nachrichten befinden sich im JMP-Protokoll?
Außerdem war in der letzten Codezeile eine Fehlkopie für die erste Methode vorhanden
" Der Zweite"
wurde vermisst kopiert. Stellen Sie sicher, dass es nicht in Ihrem Code enthalten ist.
Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Ungültiger Index (muss eine Zahl oder eine Liste von Zahlen sein) {1} für den Zugriff oder die Auswertung von '(d1 << Erhalte Zeilen mit (d1: Popcorn == d2: Popcorn & d1: Ölmenge == d2: Ölmenge & d1: batch == d2: batch)) [Row ()] ', (d1 << erhalte Zeilen wo (
d1: Popcorn == d2: Popcorn & d1: Ölmenge == d2: Ölmenge & d1: Charge == d2: Charge
))[/*###*/Reihe()]
Vielen Dank, Jim!

Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Das scheint der Fehler zu sein
Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Ich weiß nicht, was ich sagen soll. Ich habe meinen Code unter JMP Pro bis zu JMP 11 ausgeführt und kann ihn nicht zum Scheitern bringen. Ich laufe auf Windows 10
Möglicherweise müssen Sie dies an den JMP-Support weiterleiten, um die Diskrepanz weiter untersuchen zu können.Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Aha. Vielen Dank, Jim!Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Hier ist noch ein anderer Ansatz. Dieser verwendet Matrizen. Es werden einige Annahmen zwischen den Matrizen und Datentabellen getroffen, aber hoffentlich erhalten Sie genug, um loszulegen, wenn Sie interessiert sind.
Names Default To Here( 1 );
sourceTable = Data Table( "Trial1" );
resultsTable = Data Table( "Trial2" );
convertToMatrix = Function( {dt},
{Default Local},
mtrx = dt << get all columns as matrix;
numberOfColumns = N Col( mtrx );
For( i = 1, i <= numberOfColumns - 1, i++,
mtrx[0, i] *= 10 ^ (i - 1);
If( i > 1,
mtrx[0, i] = mtrx[0, i] + mtrx[0, i - 1]
);
);
mtrx[0, 1 :: numberOfColumns - 2] = [];
mtrx;
);
sourceMatrix = convertToMatrix( sourceTable );
resultsMatrix = convertToMatrix( resultsTable );
numberOfResults = N Row( resultsMatrix );
results = J( numberOfResults, 1, 0 );
For( i = 1, i <= numberOfResults, i++,
key = sourceMatrix[i, 1];
value = sourceMatrix[i, 2];
index = Loc( resultsMatrix == key ) + 1;
results[Floor( index / 2 )] = resultsMatrix[index] < value;
);
resultsTable << New Column( "Result", numeric, "continuous", values( results ) );Betreff: Wie kann das Vergleichsergebnis direkt ohne Hinzufügen von Hilfsspalten erhalten werden?Ich werde versuchen zu lernen, wie man dieses Speicherarray macht. Vielen Dank!