大家好,
JMP 中是否有任何函數可以使用上次或先前的觀察值來填充缺失值?
謝謝,
阿齊扎
關於如何處理填充腳本的分組變數有什麼建議嗎?
假設 group_by col 是“grpcol”
我嘗試添加一行 Group By(:grpcol);我不斷收到“名稱未解析:在訪問或評估 Group By 時出現 Group By”。
可以在沒有用於選擇列的友好 UI 的情況下生存,但向通用腳本添加分組變數會很棒。
有什麼建議麼?
我碰巧有一個實用程式腳本可以執行此操作
Names Default To Here( 1 );
/****************************************************************
Description: This is a data manipulation utility. The user is presented with dialog
to choose one or more columns from the data table. Upon selecting the "Ok" button,
the missing values in the chosen columns will be "filled down". Filling down is performed by
copying the last previous non missing value that is present in the previous rows. This is performed sequentially by
row, starting with the second row in the data table.
This script is useful in situations where a data table has been created or imported that has
cells not completely filled as the should be (such as when importing an excel table with
merged cells in the data).
As an example a data table with this structure:
Row Lab Setup Replicate Result
1 A 1 1 100
2 . 2 101
3 . 3 103
4 2 1 101
5 . 2 99
6 . 3 97
If the columns "Lab" and "Setup are chosen to be filled down, then the resulting table is
Row Lab Setup Replicate Result
1 A 1 1 100
2 A 1 2 101
3 A 1 3 103
4 A 2 1 101
5 A 2 2 99
6 A 2 3 97
*****************************************************************/
_dt = Current Data Table();
colnames = _dt << Get Column Names( String );
fillcolumns = Expr(
selectedcols = _lb << Get Selected;
nc = N Items( selectedcols );
nr = N Rows( _dt );
For( ii = 2, ii <= nr, ii++,
For( jj = 1, jj <= nc, jj++,
If( is missing(Column( _dt, selectedcols[jj] )[ii]),
Column( _dt, selectedcols[jj] )[ii] = Column( _dt, selectedcols[jj] )[ii - 1]
);
)
);
_nw << Close Window;
);
_nw = New Window( "Fill Down Blanks",
_tb = Text Box("This script will fill missing values in the columns you select, by using the value in the last previous not empty row for that column"),
_hb = H List Box(
_pb = Panel Box( "Select Columns", _lb = List Box( colnames, width( 300 ) ) ),
_bb = Button Box( "Go", fillcolumns )
)
);