Spalten in Zeilen umwandeln
Daten und gewünschte Ergebnisse
Ich würde mich sehr über Ihre Hilfe freuen
Qualitäts- und VerfahrenstechnikErgebnisse teilen und kommunizierenBetreff: JSL-Skript zum Transponieren von Spalten in ZeilenDanke, Jim
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenMein Fehler....aus Versehen enthielt der letzte Eintrag, den ich Ihnen gesendet habe, nicht meine Änderungen. Ich habe meine letzte Antwort bearbeitet und die JSL aktualisiert. Bitte gehen Sie zurück, rufen Sie die JSL ab und führen Sie sie aus. Es enthält nun den korrigierten Code.Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDanke, Jim, aber aus bestimmten Gründen habe ich immer noch den gleichen Fehler mit dem aktualisierten Skript

Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDas Problem bestand darin, dass einer oder mehrere der Parameter als Zeichendaten eingegeben wurden.Der Transpose kann keine gemischten Daten verarbeiten.Deshalb habe ich eine Prüfung hinzugefügt, um sicherzustellen, dass alle erkannten Parameter numerisch sind.
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0 &
Column( dt, i ) << get modeling type == "Continuous",
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the columns 2-5 in the trans data table
dtTrans1 << Add Multiple Columns( "xColumn", 4,after(:Column 1), Character );
for(i=2,i<=5,i++,
column(dtTrans1,i)<<SET name=""></SET>Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenHier ist eine
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDie angezeigte Fehlermeldung weist darauf hin, dass die Datentabelle, auf die „dtTrans2“ verweist, nicht erstellt wird.„dtTrans2“ wird aus einem Transpose() erstellt, das eine Liste von Parametern aus Ihrer Originaldatentabelle erfordert.Die „parameterColNamesList“ wird erstellt, indem alle Spalten in Ihrer ursprünglichen Datentabelle gesucht werden, die mit einer Zahl gefolgt von einem „:“ beginnen.Ich vermute, dass Ihre Parameter in Ihrer ursprünglichen Datentabelle nicht so benannt sind.Aber ohne die Datentabelle zu sehen, rate ich nur.Wenn meine Vermutung wahr ist, muss etwas gefunden werden, das die Parameterspalten identifiziert.
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenHallo Jim
Aus bestimmten Gründen habe ich immer noch Probleme mit anderen Datentabellen. Ich habe den Datentyp überprüft und sichergestellt, dass sie alle gleich sind. aber es funktioniert nicht

Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDanke, Jim
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenIn dieser Beispieldatentabelle besteht ein Problem mit der Spalte „Gerät“.Es wird als Zeichendatentyp festgelegt.Wenn Sie es in „Numerisch“ ändern, funktioniert das Skript einwandfrei.
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenIch habe das Skript anhand der von Ihnen bereitgestellten Teilmenge der Beispieldaten ausgeführt, es lief ohne Fehler und hat eine transponierte Datentabelle erstellt.Ich habe ein kleines Problem festgestellt: Die Testnamen enthielten nicht den vollständigen Namen aus der Eingabedatentabelle.Aber ansonsten scheint es korrekt gelaufen zu sein.

Hier ist die korrigierte JSL
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the columns 2-5 in the trans data table
dtTrans1 << Add Multiple Columns( "xColumn", 4,after(:Column 1), Character );
for(i=2,i<=5,i++,
column(dtTrans1,i)<<SET name=""></SET>Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenIgnorieren Sie das vorherige Beispiel, verwenden Sie bitte dieses
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenHier sind zufällige Stichprobendaten
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenOk, sicher, hier ist es
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenVersuchen Sie, den Code für Zeile 1 bis Zeile 26 auszuführen. Sie müssen lediglich diese Zeilen in Ihrem Skript auswählen (markieren) und dann auf das Ausführen-Symbol klicken.
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
Sehen Sie, ob die Datentabelle „Transpose 1“ wie folgt aussieht:

Es laufen die Linien 30 - 35
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
und prüfen Sie, ob die ParameterColNamesList die Namen aller Tests in der Datentabelle enthält.
Überprüfen Sie dann so lange die verschiedenen Codeabschnitte, bis Sie feststellen, was nicht ordnungsgemäß ausgeführt wird.
Wenn Sie mir eine Kopie der Datentabelle zur Verfügung stellen können, die Sie einlesen möchten, wäre ich bereit, die Überprüfung selbst durchzuführen.
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenEs liegt kein Protokollfehler vor. Wenn ich das Skript ausführe, passiert einfach nichts. Der einzige Unterschied besteht in den Testnamen ... sie sind unterschiedlich. aber alle anderen Header sind gleichBetreff: JSL-Skript zum Transponieren von Spalten in ZeilenGibt es Fehlermeldungen im Protokoll?
Was sind die Unterschiede zwischen den beiden Datentabellen?
Wird das Skript vor seiner Fertigstellung angehalten?
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDanke Jim! Das Format ist perfekt. Allerdings funktioniert es aus irgendeinem Grund nicht mit anderen ähnlichen Datensätzen. Gibt es einen Grund dafür?
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenHier ist eine korrigierte Version des Skripts, die die Spezifikationsspalten usw. an der richtigen Stelle positioniert und auch die Spaltenbezeichnungen hinzufügt
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the columns 2-5 in the trans data table
dtTrans1 << Add Multiple Columns( "xColumn", 4,after(:Column 1), Character );
for(i=2,i<=5,i++,
column(dtTrans1,i)<<SET name=""></SET>Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenIch verwende JMP 14
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenWelche JMP-Version verwenden Sie?Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDanke schön! das scheint ganz gut zu funktionieren. Aber aus irgendeinem Grund stehen die Spalten „Lo Limit“ und „Hi Limits“ des Testnamens an letzter Stelle. Können wir sie irgendwie neu anordnen und im Skript beschriften?
Betreff: JSL-Skript zum Transponieren von Spalten in ZeilenDas folgende Skript ist ein guter Anfang für die Erstellung der von Ihnen angeforderten Ausgabetabelle
Names Default To Here( 1 );
dt = Current Data Table();
// Transpose the Demographics
dtTrans1 = dt << Transpose(
columns( :SBIN, :HBIN, :Alarms, :Device, :Site ),
Transpose selected rows only( 1 ),
Output Table( "Transpose 1" )
);
// Change the name of the first column
dtTrans1:Label << set name( "Column 1" ) << Set Display Width( 150 );
// Change the new column names
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i ) << set name( "Column " || Char( i + 4 ) ) << Set Display Width( 100 )
);
// Change the detail name of the Alarms
dtTrans1:Column 1[(dtTrans1 << get rows where( dtTrans1:Column 1 == "Alarms" ))[1]] = "Pass/Fail/Alarm";
// Create the Devce values
deviceRow = (dtTrans1 << get rows where( dtTrans1:Column 1 == "Device" ))[1];
For( i = 2, i <= N Cols( dtTrans1 ), i++,
Column( dtTrans1, i )[deviceRow] = i - 1
);
// Now Find all of the columns that are parameters
parameterColNamesList = {};
For( i = 1, i <= N Cols( dt ), i++,
If( Is Missing( Num( Word( 1, Column( dt, i ) << get name, ":" ) ) ) == 0,
Insert Into( parameterColNamesList, Column( dt, i ) << get name )
)
);
// Transpose the parameter columns
dtTrans2 = dt << Transpose(
columns( Eval( parameterColNamesList ) ),
Transpose selected rows only( 0 ),
Output Table( "Transpose 2" )
);
// Add in the new columns to be created
dtTrans2 << Add Multiple Columns( "Column", 5, before first, Character );
// Add the values to the new columns
For( i = 1, i <= N Rows( dtTrans2 ), i++,
dtTrans2:Column 1[i] = Word( 1, dtTrans2:Label[i], ":" );
dtTrans2:Column 2[i] = Word( 2, dtTrans2:Label[i], ":" );
specs = Column( dt, dtTrans2:Label[i] ) << get property( "spec limits" );
If( Is Missing( specs["LSL"] ) == 0,
dtTrans2:Column 3[i] = specs["LSL"]
);
If( Is Missing( specs["USL"] ) == 0,
dtTrans2:Column 4[i] = specs["USL"]
);
If( Column( dt, dtTrans2:Label[i] ) << get property( "Units" ) != "",
dtTrans2:Column 5[i] = Column( dt, dtTrans2:Label[i] ) << get property( "Units" )
);
);
// Get rid of the label column which is no longer needed
dtTrans2 << delete columns( :Label );
// Change the names of the Trans2 table to match the names in the Trans1 table
For( i = 6, i <= N Cols( dtTrans2 ), i++,
Column( dtTrans2, i ) << set name( "Column " || Char( i ) )
);
// Combine the 2 Transformed data tables
dtFinal = dtTrans1 << concatenate( dtTrans2 );
// Cleanup the no longer needed data tables
close( dtTrans1, nosave );
close( dtTrans2, nosave );