ある列から選択したセルをコピーし、別の列の選択したセルに貼り付けるこんにちは、JSL初心者です。 ある列内のセルのブロックを、新しく作成された別の列の別の場所に移動する方法を学ぶ必要があります。この場合、この新しい列の上にあります。
具体的には、別の PRE/POST 列で PRE とマークされた THK 列のセルのセットを選択し、THK PRE とマークされた新しい列の上に貼り付ける必要があります。 これは、列の分割機能に似ていますが、THK 列の一部のセルのデータが欠落している場合、何らかの不具合により、新しく作成された列でデータが乱雑に表示される場合があるため、列の分割機能は使用したくありません。
フォーラムのいくつかの例から、以下のコードをまとめましたが、新しく作成された THK PRE 列には値が貼り付けられません。助けてください!よろしくお願いします。
必要なものは次のとおりです。
開始データテーブル
事前/事後だと思います
9.5 ポスト
9.8 ポスト
10.1 ポスト
11.0 プレ
11.4 事前
10.9 プレ
この操作後のデータ テーブルは次のようになります。
THK |事前/事後 | THKプレ
9.5ポスト11.0
9.8ポスト11.4
10.1 ポスト 10.9
11.0 プレ
11.4 プレ
10.9 プレ
以下のスクリプトは、新しく作成された列に値を貼り付けず、列は空のままです。
// Pick the source data table
dt=Open("Data Table");
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous");
Wait(1);
// Select PRE values from THK column
vals = Column(dt, "THK") << Get Rows Where(:Name("PRE/POST") == "PRE");
// Put these in the new column THK PRE
Column(dt, "THK PRE") << Set Values(vals)
助けてください! よろしくお願いします。JUMP16.0.0を使用しています
@jthi
データのブレンディングとクリーンアップRe: ある列から選択したセルをコピーし、別の列の選択したセルに貼り付けるこんにちは、Txnelson さん。素早い対応に感謝します。まるで魔法のように機能します!かなり近づいたと思いますが、構文を完全には理解できませんでした。
Re: ある列から選択したセルをコピーし、別の列の選択したセルに貼り付けるこれは、必要なことを処理するいくつかの注釈を追加してスクリプトを再加工したものです
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous" );
Wait( 0 );
// Find the rows PRE values from THK column
// and copy those values from the found rows
// to the vals matrix
vals = :THK[dt << get rows Where( :Name( "PRE/POST" ) == "PRE" )];
// Put these in the new column THK PRE
dt:THK PRE << Set Values( vals );Re: ある列から選択したセルをコピーし、別の列の選択したセルに貼り付ける選択したデータを同じ行位置の新しい列に貼り付ける方法はありますか? または、選択に基づいて新しい列の値を設定する方法はありますか? このような方法でしょうか?

Re: ある列から選択したセルをコピーし、別の列の選択したセルに貼り付ける希望どおりのことをするには、いくつかの方法があります。
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE1",
Numeric,
"Continuous",
formula( If( :"PRE/POST"n == "PRE", :THK, . ) )
);
dt << New Column( "THK PRE2", Numeric, "Continuous" );
For Each Row(
If( :"PRE/POST"n == "PRE",
:THK PRE2 = :THK,
:THK PRE2 = .
)
);
2番目の例のようにTHK PRE値を5にしたい場合は、結果の値を:THKから5に変更するだけです。
Re: ある列から選択したセルをコピーし、別の列の選択したセルに貼り付けるご回答ありがとうございます。私は、知らなかった「貼り付け」スクリプト関数があることを期待していました。列にすでに他の値が含まれている場合は、提案されたように各行をループする必要があるようです。
Re: ある列から選択したセルをコピーし、別の列の選択したセルに貼り付けるコピー/貼り付けに少し近づきました。一度にすべての値を取得して一括書き込みできます。
データテーブルの添え字
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 100 ),
New Column( "input",
Set each Value( random uniform () )
),
New Column( "variant",
Character,
set each value({"A","B"}[random integer(1,2)])
)
);
dt << New Column( "out");
rows= Where(:variant == "A");
vals = dt[rows,"input"];
dt[rows,"out"]=vals;
これは
dt:THK PRE << Set Values( vals );
違い: データ テーブルのインデックスを使用すると、書き込む行を正確に指定できます。
値の設定は行1 から始まり、配列内の値と同じ数の行を埋めます。