將另一個資料表檔案中的值新增至目前資料表檔案中你好,
您好,我對 JSL 腳本有疑問(對此非常新!)
我有兩個數據文件 - 表 A 和表 B。
表 A:-
表 B:-

我想添加值表 B 列名稱“偏移量”到表 A 中列組「測試」的每一行並產生一個新增了值的新資料表檔案。
PS- 表 A 文件中有 100 多列。 如何使用 for 迴圈迭代所有行和列?
這是我嘗試開始的。 對此有什麼想法或更有效的方法嗎?
</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">@tx尼爾森</A><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6657" target="_blank">@ih</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"> @傑夫·珀金森</A></P><P> </P><P> </P></LINGO-BODY><LINGO-LABS id="lingo-labs-412679" slang="en-US" mode="NONE"><LINGO-LABEL>自動化和腳本編寫</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-413205" slang="en-US" mode="NONE">回覆:將另一個資料表檔案中的值加入到目前資料表檔案中</LINGO-SUB><LINGO-BODY id="lingo-body-413205" slang="en-US" mode="NONE"><P>嗯,不只是我。 我以前看過類似的帖子</P></LINGO-BODY><LINGO-SUB id="lingo-sub-413030" slang="en-US" mode="NONE">回覆:將另一個資料表檔案中的值加入到目前資料表檔案中</LINGO-SUB><LINGO-BODY id="lingo-body-413030" slang="en-US" mode="NONE"><P>社群討論論壇不是為您編寫 JMP 腳本的地方!您需要花時間學習 JSL,並使用論壇來幫助您解決您不理解的特定問題。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-413029" slang="en-US" mode="NONE">回覆:將另一個資料表檔案中的值加入到目前資料表檔案中</LINGO-SUB><LINGO-BODY id="lingo-body-413029" slang="en-US" mode="NONE"><P>程式碼運行時的日誌檔案條目是:</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>這告訴您,您使用的 For() 函數語法不正確。</P>
<P>正確的定義可以在腳本索引或腳本指南中找到。另外,如果您查看 For() 函數的實作和我提供的範例,您的版本並不相同。</P>
<P>您的解決方案將要求您循環遍歷表 A 中的列。對於每一列,您需要取得需要套用於表 A 列中的值的偏移值,然後循環遍歷該列中的所有行,以套用正確的偏移量。<CODE class=" language-jsl">
回覆:將另一個資料表檔案中的值加入到目前資料表檔案中你好@ih ,
我想添加值表 B 列名稱“偏移量”到表 A 中列組「測試」的每一行並產生一個新增了值的新資料表檔案。 表A中有100多列。 如何使用循環語法來迭代每一行和每一列?
這是我嘗試開始的
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];
);
感謝您的建議
回覆:將另一個資料表檔案中的值加入到目前資料表檔案中@tx尼爾森
這是我嘗試過的。 我不確定出了什麼問題。 你能看一下嗎?
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];
);
回覆:將另一個資料表檔案中的值加入到目前資料表檔案中您可以使用
colList = dt << get column names;
取得資料表中的列名
然後使用 For() 循環
For(i=1,i<=N Items(colList), i++,
.......
.......
.......
);
執行您需要對每一列執行的操作。
這些都記錄在腳本指南和腳本索引......以及範例中
回覆:將另一個資料表檔案中的值加入到目前資料表檔案中如何使用循環來執行加法。 表A中有超過100列?
回覆:將另一個資料表檔案中的值加入到目前資料表檔案中非常感謝@tx尼爾森你真是天才:)
回覆:將另一個資料表檔案中的值加入到目前資料表檔案中- 請花時間閱讀腳本指南並熟悉腳本索引。
- 如果您需要溫習一般程式設計技能,網路上有大量網站可以提供協助。
- 這是一個簡單的腳本,可以完成您想要的操作
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];
);