Fügen Sie Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzuHallo,
Hallo, ich habe Zweifel bezüglich des JSL-Skripts (sehr neu in diesem Bereich!)
Ich habe zwei Datendateien – Tabelle A und Tabelle B.
Tabelle A:-
Tabelle B:-

Ich möchte Werte hinzufügen von Tabelle B Spaltenname „Offset“ Zu jede Zeile der Spaltengruppe „Tests“ in Tabelle A und generieren Sie eine neue Datentabellendatei mit hinzugefügten Werten.
PS: Die Tabelle A-Datei enthält mehr als 100 Spalten. Wie kann ich eine for-Schleife verwenden, um alle Zeilen und Spalten zu durchlaufen?
Hier ist, womit ich versucht habe zu beginnen. Irgendwelche Ideen dazu oder eine effizientere Möglichkeit, dies zu tun?
</CODE></PRE><PRE class="language-jsl"><CODE>Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
For Each Row(
dt:Current = dt:Current + dtOffset:Offset[1];
dt:Voltage = dt:Voltage + dtOffset:Offset[2];
dt:Resistance = dt:Resistance + dtOffset:Offset[3];
dt:Inductance = dt:Inductance + dtOffset:Offset[4];
dt:Capacitance = dt:Capacitance + dtOffset:Offset[5];
dt:Power = dt:Power + dtOffset:Offset[6];
dt:Temperature = dt:Temperature + dtOffset:Offset[7];
dt:Humidity = dt:Humidity + dtOffset:Offset[8];
dt:Pressure = dt:Pressure + dtOffset:Offset[9];
dt:Suseptance = dt:Suseptance + dtOffset:Offset[10];
);
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
colList = dt << get column names(string);
For( i = 1, i <= N Items( colList ), i++,
// Find the offset value in the dtOffset(Table B) data table
// Because the column name from Table A may not have an offset
// in Table B that has to be accounted for
theRow = dtOffset << get rows where( dtOffset:Tests == colList[i] );
show(i,nrows(therow));
// If no rows are returned, no offset was found
If( N Rows( theRow ) == 1,
offset = dtOffset:Offset[theRow[1]];
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Column( dt, i )[k] + offset
);
);
</CODE></PRE><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2687" target="_blank">@txnelson</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6657" target="_blank"> @ich h</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14366" target="_blank"> @jthi</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6878" target="_blank"> @Jeff_Perkinson</A></P><P> </P><P> </P></LINGO-BODY><LINGO-LABS id="lingo-labs-412679" slang="en-US" mode="NONE"><LINGO-LABEL>Automatisierung und Skripterstellung</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-413205" slang="en-US" mode="NONE">Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügen</LINGO-SUB><LINGO-BODY id="lingo-body-413205" slang="en-US" mode="NONE"><P>Nun, das liegt nicht nur an mir. Ich habe ähnliche Beiträge schon einmal gesehen</P></LINGO-BODY><LINGO-SUB id="lingo-sub-413030" slang="en-US" mode="NONE">Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügen</LINGO-SUB><LINGO-BODY id="lingo-body-413030" slang="en-US" mode="NONE"><P>Das Community-Diskussionsforum ist kein Ort, an den Sie JMP-Skripte schreiben lassen können!Sie müssen sich die Zeit nehmen, JSL zu erlernen und das Diskussionsforum zu nutzen, um Ihnen bei spezifischen Problemen zu helfen, die Sie nicht verstehen.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-413029" slang="en-US" mode="NONE">Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügen</LINGO-SUB><LINGO-BODY id="lingo-body-413029" slang="en-US" mode="NONE"><P>Der Protokolldateieintrag seit der Ausführung Ihres Codes lautet:</P>
<PRE>not enough arguments in access or evaluation of 'For' , For/*###*/(i = 1 ; N Rows( dt ) ; i++, Column( dtOffset )[i] = dt:colList[i]
+dtOffset:Offset[i])
at line 7 in Script 5.jsl</PRE>
<P>Dies bedeutet, dass die von Ihnen verwendete For()-Funktionssyntax falsch ist.</P>
<P>Die korrekte Definition finden Sie im Scripting Index oder im Scripting Guide.Wenn Sie sich außerdem Ihre Implementierung der For()-Funktion und das von mir bereitgestellte Beispiel ansehen, ist Ihre Version nicht dieselbe.</P>
<P>Ihre Lösung erfordert, dass Sie die Spalten in Tabelle A durchlaufen.Für jede Spalte müssen Sie den Offset-Wert abrufen, der auf die Werte in der Spalte von Tabelle A angewendet werden muss, und dann alle Zeilen in dieser Spalte durchlaufen und dabei den richtigen Offset anwenden.<CODE class=" language-jsl">
Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügenHallo @ich h ,
Ich möchte Werte hinzufügen von Tabelle B Spaltenname „Offset“ Zu jede Zeile der Spaltengruppe „Tests“ in Tabelle A und eine neue Datentabellendatei mit hinzugefügten Werten erstellen. Tabelle A enthält mehr als 100 Spalten. Wie kann ich eine Schleifensyntax verwenden, um alle Zeilen und Spalten zu durchlaufen?
Hier ist, womit ich versucht habe zu beginnen
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
colList = dt << get column names;
For(i=1; N Rows(dt); i++,
Column(dtOffset)[i] = dt:colList[i] + dtOffset:Offset[i];
);
Vielen Dank, wenn Sie einen Vorschlag machen könnten
Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügen@txnelson
Hier ist, was ich versucht habe. Ich bin mir nicht sicher, was los ist. Können Sie bitte einen Blick darauf werfen?
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
colList = dt << get column names;
For(i=1; N Rows(dt); i++,
Column(dtOffset)[i] = dt:colList[i] + dtOffset:Offset[i];
);
Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügenSie können verwenden
colList = dt << get column names;
um die Namen der Spalten in der Datentabelle abzurufen
und verwenden Sie dann eine For()-Schleife
For(i=1,i<=N Items(colList), i++,
.......
.......
.......
);
um die Vorgänge auszuführen, die Sie für jede Spalte ausführen müssen.
Diese sind im Scripting-Handbuch und im Scripting-Index dokumentiert … mit Beispielen
Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügenWie kann ich eine Schleife verwenden, um eine Addition durchzuführen? Es gibt mehr als 100 Spalten in Tabelle A?
Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügenVielen Dank @txnelson Du bist ein Genie 
Betreff: Werte aus einer anderen Datentabellendatei zur aktuellen Datentabellendatei hinzufügen- Bitte nehmen Sie sich die Zeit, den Scripting Guide zu lesen und sich mit dem Scripting Index vertraut zu machen.
- Wenn Sie Ihre allgemeinen Programmierkenntnisse auffrischen möchten, gibt es im Internet zahlreiche Websites, die Ihnen dabei helfen können.
- Hier ist das einfache Skript, das das tut, was Sie wollen
Names Default To Here( 1 );
dt = Data Table( "Table A" );
dtOffset = Data Table( "Table B" );
For Each Row(
dt:Current = dt:Current + dtOffset:Offset[1];
dt:Voltage = dt:Voltage + dtOffset:Offset[2];
dt:Resistance = dt:Resistance + dtOffset:Offset[3];
dt:Inductance = dt:Inductance + dtOffset:Offset[4];
dt:Capacitance = dt:Capacitance + dtOffset:Offset[5];
dt:Power = dt:Power + dtOffset:Offset[6];
dt:Temperature = dt:Temperature + dtOffset:Offset[7];
dt:Humidity = dt:Humidity + dtOffset:Offset[8];
dt:Pressure = dt:Pressure + dtOffset:Offset[9];
dt:Suseptance = dt:Suseptance + dtOffset:Offset[10];
);