按行,堆棧列過濾?我知道如何根據一些條件製作子表:
dt << Row Selection( Select where( (:Stat == "mean"), Current Selection( Extend )) );
dt << Select Columns( [10, 20] );
dt2 << Subset( Output Table( "test"), Selected Rows( 1 ), Selected columns( 1 ) );
但是,現在我需要對多個條件重複上述操作並堆疊選擇,即新表將第10列作為固定列,然後我繼續添加第20列,僅使與上述條件匹配的行。 行數將始終相同。
“堆棧”命令不適用於選擇,因此不確定其他什麼命令可以執行此操作嗎?
腳本編寫回复:按行,堆棧列過濾嗎?這是使用Stack平台時刪除所選行的簡便方法的示例
names default to here(1);
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Row Selection( Select where( (:Sex=="F"), Current Selection( "Extend" )) );
// Stack data table
dtStack = dt << Stack(
columns( :height, :weight ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << delete rows;
回复:按行,堆棧列過濾嗎?(錯誤地接受作為解決方案)
謝謝,但我不想刪除選定的行。 我可以解決這個問題,但是在使用Stack時如何追加選擇呢?回复:按行,堆棧列過濾嗎?這是我認為可以完成的方式(但不起作用):
my_list = {"F0","F1"};
stackcols = {};
For( i = 1, i <= N Items( my_list ), i++,
dt << Row Selection( Select where( (:Freq==my_list[i]), Current Selection( "Extend" )) );
dt << Select Columns( [19] );
Insert Into( stackcols, dt )
);
dt2 << Subset( Output Table( "aa"), Selected Rows( 1 ), Selected columns( 1 ) );基本上,我根據“ Freq”列過濾活動表,首先按值“ F0”過濾,然後按“ F1”過濾。 這位於第19列。 我將該選擇添加到名為“ stackcols”的選擇列表中。 因此,在循環之後,我希望這是一個兩列寬的列表。 然後,我要用它製成一張桌子(稱為“ aa”)。 但這是行不通的。
回复:按行,堆棧列過濾嗎?啊.....關於刪除選定的行,您是正確的。但是要刪除未選中的,只需使用
dtStack << Invert Row Selection;
然後刪除行。
要附加多個獨立的Stacked數據表,只需:
- 在開始重複的Stack實例之前,創建一個空的Base數據表,該表最終將所有堆疊的表連接到該表
dtBase = New Table("Base");
- 然後針對您創建的每個堆疊表,
- 從堆疊數據表中刪除不需要的行
- 將Stacked表連接到Base表
dtBase << Concatenate( dtStacked );
- 刪除堆積表
Close( dtStacked, nosave );
回复:按行,堆棧列過濾嗎?謝謝,但是沒有用:
dt = current data table();
my_list = {"F0","F1"};
dtBase = New Table("Base");
dtStacked = {};
For( i = 1, i <= N Items( my_list ), i++,
dt << Row Selection( Select where( (:Freq==my_list[i]), Current Selection( "Extend" )) );
dt << Select Columns( [19] );
Insert Into( dtStacked, dt );
dtBase << Concatenate( dtStacked );
Close( dtStacked, nosave );
);dtBase為空。