從一列複製選定的單元格並將其粘貼到另一列的選定單元格中大家好,我是一名 JSL 初學者。 我需要學習如何將一列中的一組單元格移動到另一個新創建的列中的不同位置。在本例中,位於這個新列的頂部。
具體來說,我需要在單獨的 PRE/POST 列中選擇 THK 列中標記為 PRE 的一組單元格,並將它們粘貼到標記為 THK PRE 的新列的頂部。 它有點類似於“拆分列”功能,但我不想使用“拆分列”功能,因為我發現,由於一些故障,如果 THK 列的某些單元格中的數據丟失,則數據有時會在新創建的列中出現混亂。
根據論壇上的一些示例,我將下面的代碼放在一起,但它沒有在新創建的 THK PRE 列中粘貼任何值。請幫忙!提前謝謝了。
這是我需要的:
起始數據表
THK 我前/後
9.5 後處理
9.8 後處理
10.1 發布
11.0 預
11.4 預演
10.9 預習
這是我需要的數據表在執行此操作後的樣子:
泰克 |前/後| 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)
請幫忙! 提前謝謝了。我用的是JUMP 16.0.0
@jthi
數據混合和清理回复:從一列複製選定的單元格並將其粘貼到另一列的選定單元格中您好 Txnelson,非常感謝您的快速回复!奇蹟般有效!我想我已經非常接近了,但無法完全理解我們的語法。
回复:從一列複製選定的單元格並將其粘貼到另一列的選定單元格中這是對腳本的修改,添加了一些註釋來處理您想要的內容
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 );回覆:從一列複製選定的儲存格並將其貼上到另一列的選定儲存格中有沒有辦法將選定的資料貼到同一行位置的新列中?或根據選擇設定新列的值?像這樣的東西嗎?

回覆:從一列複製選定的儲存格並將其貼上到另一列的選定儲存格中這裡有幾種方法可以做你想做的事。
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 = .
)
);
如果您希望 THK PRE 值為 5(如第二個範例所示),只需將結果值從 :THK 變更為 5
回覆:從一列複製選定的儲存格並將其貼上到另一列的選定儲存格中感謝您的回應。我希望有一個我不知道的“貼上”腳本功能。看起來如果該列已經包含其他值,我將不得不按照您的建議循環遍歷每一行。
回覆:從一列複製選定的儲存格並將其貼上到另一列的選定儲存格中更接近複製/貼上:您可以一次獲取並批量寫入所有值:
數據表下標
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 行開始,填入與陣列中的值一樣多的行。