Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenHallo JMP-Community
Ich habe einen Datensatz, der nur teilweise mit Chargennummern ausgefüllt ist.
Mein Ziel ist es, einen Datensatz zu erstellen, der eine Zeile pro Stapel enthält.
Durch Vergleich der ersten und letzten Batch-Nummer kann ich berechnen, wie viele Zeilen benötigt werden.
Wie im Beispiel zu sehen ist, bräuchte ich einen Datensatz mit 30 Zeilen, da die erste Batch-Nummer 7 und die letzte 37 ist.
Im Batchnamen sollten die ersten 3 und die letzten 2 Ziffern ignoriert werden.
Meiner Meinung nach sollte das ganz einfach sein, aber ich stecke fest …
Ich würde es sehr schätzen, wenn ich weiterkomme!
Danke
Christian
Automatisierung und SkriptingDatenzusammenführung und -bereinigungBetreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenHmmm, ich verstehe Ihre Frage nicht? Sie haben mehrere Zeilen mit identischen Informationen (die ersten drei und die Zeilen 4 und 5). Ihnen fehlen die Zeilen mit 21-23, 25-26 und 29? Auch die ersten sechs Ziffern sind identisch.
Was genau möchtest du tun? Du kannst jederzeit mit der rechten Maustaste auf die Spalte klicken und „Neu kodieren“ verwenden.
Betreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenSo etwas wie das hier? Es erstellt eine neue Tabelle mit einer einzelnen Zeile für jeden Stapel anstelle mehrerer Zeilen und füllt die fehlenden Stapel aus.
Names Default To Here( 1 );
Batch_vals = Associative Array( :Batch ) << Get Keys;
prefix = Left( :Batch[1], 3 );
suffix = Right( :Batch[1], 2 );
rootlength = Length( Batch_vals[1] ) - Length( prefix ) - Length( suffix );
Batch_nums = Transform Each( {v, i}, Batch_vals, Num( Substitute( v, {prefix, suffix}, "" ) ) );
Min_batch = Min( Batch_nums );
Max_batch = Max( Batch_nums );
Batches = Min_batch :: Max_batch;
dt = New Table( "Batches", New Column( "Batch Number", numeric, continuous, Set Values( Batches ) ) );
Eval(
Eval Expr(
dt << New Column( "Batch", character, Formula( Expr( prefix ) || Right( Char( :Batch Number ), rootlength, "0" ) || Expr( suffix ) ) )
)
);
dt:Batch << Delete Formula;Betreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenDadurch werden keine Chargennummern, sondern nur die Nummern erstellt.
Names Default To Here(1);
dt = Data Table("Format");
Summarize(dt, uniq = By(:Batch));
first_val = Num(Substr(uniq[1], 4, Length(uniq[1]) - 5));
last_val = Num(Substr(uniq[N Items(uniq)], 4, Length(uniq[1]) - 5));
dt = New Table("Res",
New Column("R", Numeric, Ordinal, Values(first_val::last_val))
);
Sie können Chargennummern wieder hinzufügen, indem Sie die Artikelliste in eine Zeichenfolge umwandeln und daraus eine Tabelle erstellen (dieselben first_val und last_val wie zuvor).
batches = Transform Each({item}, As List((first_val::last_val)`),
"245" || Right("00000" || Char(item), 5) || "00"
);
dt = New Table("Res2",
New Column("R", Character, Ordinal, Values(batches))
);Betreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenDanke, Jarmo! Das ist perfekt.
Während ich diesen Beitrag schrieb, prahlte ich damit, wie unglaublich die JMP-Community ist, und ich wurde nicht enttäuscht!
Grüße, Christian
Betreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenDanke für die Antwort, @mmarchandFSLR !
Ihr Skript funktioniert perfekt!
Ihre Lösung enthält einige Eingabeaufforderungen/Skripte, die für mich neu sind, z. B. Associative Array, Transform Each, Eval, Eval Expr.
Ich freue mich darauf, herauszufinden, wie Ihre Lösung funktioniert!
Während ich diesen Beitrag schrieb, prahlte ich damit, wie unglaublich die JMP-Community ist, und wurde nicht enttäuscht!
Grüße, Christian
Betreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenEinfache Erklärung einiger dieser Funktionen und einer wichtigen Änderung:
Names Default To Here( 1 );
//An associative array is a dictionary or hash map that links keys to values. Each key must be unique.
//Using a single column as the argument for the array gives us the unique values of the column with each value set to 1
//The <<GET keys="" message="" then="" yields="" the="" only=""></GET>
Betreff: Erstellen Sie eine Datentabelle, indem Sie Stapel in der Tabelle zählenDurch fortlaufendes Erhöhen der Batchnummern können Sie Zeilen erstellen.