如何刪除數據集中所有列中缺少數據的行?抱歉,我的問題有多基本,我才剛開始使用JMP。
我有一個龐大的數據集(14列x 20,000行),我試圖編寫一個腳本,該腳本將識別和刪除針對特定範圍的列(列4-14)不具有0或1的所有行。 該數據集來自更大的數據集,因此我的子集中有些行完全為空。 這是我希望做的一個例子:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
變成:
0 0 1 - 0
1 - - - -
我已經開始編寫代碼,但是我遇到了麻煩–我不確定在For Each行之後該怎麼做。 我希望此腳本一次只能查看一行,並且如果特定的單元格沒有0或1,那麼它將在下一列中查找0或1,如果到了末尾行中沒有0或1的行,那麼它將刪除整個行。 到目前為止,這是我的代碼:
dt=Open("File Name")
colnames = dt << get column names( numeric,string );
For( i = 4, i <= N Items( colnames ), i++,
For Each Row(If(:colnames != 0 | :colnames != 1), Continue()
)
);我在考慮使用
<< Delete Rows
,這是我在該論壇上其他一些問題上看到的。 如果使用腳本過於復雜,是否有更好的方法呢?
腳本編寫回复:如何刪除數據集中所有列中缺少數據的行?這需要是腳本嗎?
如果僅找到缺少這些特定單元格的一行,請選擇缺少的單元格。
現在轉到“行”菜單,然後選擇“行選擇”>“選擇匹配的單元格”。
現在,將選擇那些列中缺少數據的每一行。 選擇“行”>“刪除行”。
回复:如何刪除數據集中所有列中缺少數據的行?我認為您需要查看Missing Data Pattern平台:
表格=>缺少數據模式
從您的描述來看,聽起來像滿足您的需求。它將分析您指定的列,然後從它產生的數據表中選擇所有缺少值的列,然後將其刪除。
回复:如何刪除數據集中所有列中缺少數據的行?或者,如果您要編寫腳本,這是我的建議:
dt << New Column("Selected", Character, Nominal, Formula(
If(Is Missing(:Column4) | Is Missing(:Column5)|...until column14,
"Yes",
"No"
)
));
dt << Select Where(:Selected == "Yes");
dt << Delete Rows;回复:如何刪除數據集中所有列中缺少數據的行?該腳本將處理您的請求。 在其他答復中,它並不是唯一的。
Names Default to Here( 1 );
// get reference to target data table
dt = Current Data Table();
// get all the columns for missing value check
cols = dt << Get Column Names;
// obtain missing value patterns
missing = Current Data Table() << Missing Data Pattern(
Columns( Eval( cols ) ),
Output Table( "Missing Data Pattern" )
);
// make character string representing missing values in all columns
n missing = N Items( cols );
all missing = Repeat( "1", n missing );
// find the row of patterns where all columns are missing.
missing << Select Where( :Patterns == all missing );
// delete the linked rows in the original table
dt << Delete Rows;
// clean up
Close( missing, No Save );
回复:如何刪除數據集中所有列中缺少數據的行?如先前的答复所示,在JMP中通常有許多方法可以執行任務。
如果所有4至14列都是數字,則此腳本還應僅刪除缺少值的行。
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));