別のデータ テーブル ファイルから現在のデータ テーブル ファイルに値を追加するやあ、
こんにちは、JSLスクリプトについて疑問があります(これは非常に新しいです!)
テーブル A とテーブル B の 2 つのデータ ファイルがあります。
表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">@txnelson</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-LABEL>スクリプティング</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-413205" slang="en-US" mode="NONE">Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加する</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">Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加する</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">Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加する</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>正しい定義は、Scripting Index または Scripting Guide にあります。また、For() 関数の実装と私が提供したサンプルを見ると、バージョンは同じではありません。</P>
<P>あなたのソリューションでは、テーブル A の列をループする必要があります。列ごとに、テーブル A 列の値に適用する必要があるオフセット値を取得し、その列のすべての行をループして、正しいオフセットを適用する必要があります。<CODE class=" language-jsl">
Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加するやあ@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];
);
あなたが提案できれば感謝します
Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加する@txnelson
これが私が試したものです。 何が悪いのかわからない。 ご覧いただけますか?
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];
);
Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加する使用できます
colList = dt << get column names;
データテーブルの列の名前を取得する
次に、For() ループを使用します
For(i=1,i<=N Items(colList), i++,
.......
.......
.......
);
各列に対して必要な操作を実行します。
これらは、スクリプト ガイドとスクリプト インデックスに記載されています...例とともに
Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加するループを使用して加算を実行するにはどうすればよいですか。 テーブル A に 100 を超える列がありますか?
Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加するどうもありがとう@txnelsonあなたは天才です:)
Re: 別のデータ テーブル ファイルの値を現在のデータ テーブル ファイルに追加する- 時間をかけてスクリプト ガイドを読み、スクリプト インデックスをよく理解してください。
- 一般的なプログラミング スキルを磨く必要がある場合は、それを支援できるインターネット上のサイトが多数あります。
- ここにあなたが望むことをする簡単なスクリプトがあります
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];
);