填寫缺失的單元格<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />報告表通常最終包含不完整的列,其中標籤需要復製到下面的順序單元格,直到下一個標籤一次又一次地重複該過程。 Excel 導入嚮導有一個選項來處理合併的缺失單元格的跨度。 該腳本可以在數據導入後使用,不需要合併缺失單元格的跨度。
我一直在使用這個腳本或它的版本,以至於我不確定它的骨頭來自哪裡。
回复:填寫缺失的單元格@bayesfactor寫道:
我必須說,對於應該是 1-liner 的東西,這些是一些非常複雜的解決方案:
我同意用戶必須在您提供的鏈接中編寫一行代碼,但底層函數不是單行代碼。 對於幾乎任何編程語言中的大多數易於使用的函數都是如此,如果它是 R、Python、MATLAB,甚至在 C/C++ 中,......
在數據表工具加載項中(如@Byron_JMP提到)你會發現一個功能跨度空單元格,其中@brady_brady已經創建了這樣一個功能,您可以使用一個命令來執行您想要的操作。 雖然該工具將表格和列的選擇以及所有設置放入一個界面。 因此,如果您想以不同的方式進行操作,則必須修改函數源代碼,以便它採用選定的列並接受一個單獨的輸入,指定跨越單元格的方式。
如果您希望有一個 JSL 函數來執行此操作以便能夠將其合併到其他腳本中,最好將此請求同時support@jmp.com和JMP 願望清單。
另一種方法是構建 Brady 的腳本函數並修改例程以用作 JSL 腳本中的 JSL 函數。
回复:填寫缺失的單元格獲取此加載項(免費)
數據表工具插件

幾乎可以肯定 span 空單元格工具會滿足您的需求。
回复:填寫缺失的單元格我有一個案例,我想根據標籤列在表的塊內向前和向後填充多個列的值。 在所有這些討論之後,我認為沒有一種優雅的方式可以做到這一點——如果我錯了,請糾正。
我必須說,對於應該是 1-liner 的東西,這些是一些非常複雜的解決方案:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.DataFrameGroupBy.fillna.html
回复:填寫缺失的單元格你好,
這兩個選項可能會有一個更優雅的版本。
附件是一個數據表,包括一個 tavble 腳本做你想做的事(我認為)。 此外,還有一個帶有公式的 Column 使用 Match 語句做同樣的事情。 我使用的腳本是
Names Default to Here(1);
dt = Current Data Table();
For(i = 1, i <= N Rows(dt), i++,
n = dt << get rows where(:Parameter == "def");
Column("Value")[n] = "NA";
n = dt << get rows where(:Parameter == "jkl");
Column("Value")[n] = "NA";
n = dt << get rows where(:Parameter == "mno");
Column("Value")[n] = "NA";
n = dt << get rows where(:Parameter == "d");
Column("Value")[n] = "NA";
);
最好的,
馬丁
回复:填寫缺失的單元格還停留在這一點上,不知道如何進一步進行。
任何輸入表示讚賞!
謝謝
回复:填寫缺失的單元格謝謝回复!
我正在嘗試為此編寫一個腳本。這裡的問題是我可能有更多空白列。但只需要檢查這 4 列的值並填寫“NA”。
謝謝
回复:填寫缺失的單元格你想要一個腳本來做到這一點嗎? 交互式您可以使用重新編碼並保存公式列,此公式腳本可用於執行您想要的操作
另一種方法是使用新的公式列,在公式編輯器中,您可以使用條件 if 語句並檢查缺失並將值設置為 na
然後你可以使用 ctrl+f 來搜索和替換。
Sonthere 有很多選項可供您選擇。 我非常喜歡重新編碼。 在腳本中,我可能會使用另一種方式:將列保存在矩陣或列表中,因為您想使用非數字值“na”,這會將值更改為字符,將缺失值更改為 na,然後將值寫回列值。 希望這些想法之一將進一步幫助您
回复:填寫缺失的單元格我有一個包含 2 列的數據表。 需要檢查 def、jkl、mno 和 stu 的 Value 是否為空,並為這些條目填寫“NA”。
任何幫助表示讚賞。
| 範圍 | 價值 |
| 美國廣播公司 | 5 |
| 定義 | |
| 吉 | 22 |
| jkl | |
| mno | |
| pqr | 3 |
| 斯圖 | |
| vwx | 73 |
| yz | 99 |
回复:填寫缺失的單元格另一個更新:
而不是使用這個腳本,看看這個工具集合: https://community.jmp.com/t5/JMP-Add-Ins/Data-Table-Tools-Add-in/ta-p/28582
這個插件有一個更好的版本的上面的腳本加上一大堆。
乾杯,
拜倫
回复:填寫缺失的單元格一個類似的問題,但有點不同的是您想要一定數量的單元格的情況前實際條目具有相同的值。 在那裡,您需要進行調整以不覆蓋以前的例如 4 個單元格,以防有非缺失條目。 附上腳本和腳本運行前後數據表的屏幕截圖。 在這個腳本中,我只介紹了數字情況。
Names Default To Here( 1 );
// Get Current Data Table
dt = Current Data Table();
// Get Column Names from selection box (where you want to fill)
dtcollist = dt << get column names;
dlg = Dialog(
"Select Column",
vlist( selection = List Box( dtcollist ), button( "OK" ) )
);
Remove From( dlg, 2 );
Eval List( dlg );
// Get matrix of values in selected columns
dtMat = (dt << Get All Columns As Matrix);
// For loop to loop through all selected columns
For( i = 1, i <= N Items( selection ), i++,
// get i-th selected column
colNum = Contains( dtColList, Name Expr( selection[i] ) );
// get values as matrix
vMat = dtMat[0, colNum];
// get rows where matrix is non-empty
mis = Loc( vMat );
// If there is non-missing value loop through previous rows
If( N Row( mis ),
// Get i-th Column name
col = Column( selection[i] );
/*
If( mis[1] == 1,
col[1] = col[(Loc( vMat ))[1]]
);
*/
// Loop to fill previous 4 rows from the row with the k-th non-missing value
For( k = 1, k <= N Rows(mis), k++,
For( j = If(mis[k]-4 < 1, 1,mis[k]-4), j < mis[k], j++,
If(Is Missing(col[j]), col[j] = col[mis[k]],col[j])
);
);
);
);
Data Table before and after applying the script應用腳本前後的數據表
回复:填寫缺失的單元格我正在用這個腳本更新這個插件。 感謝 Brady Brady 進行了一些調整,使其在真正的大桌子上運行得更快。 在一個 5MM 行表上,每 10K 行填充一些東西需要 10-15 秒。
Names Default To Here( 1 );
dt = Current Data Table();
dtcollist = dt << get column names;
dlg = Dialog( "Select Column", vlist( selection = List Box( dtcollist ), button( "OK" ) ) );
Remove From( dlg, 2 );
Eval List( dlg );
dtMat = (dt << Get All Columns As Matrix);
For( i = 1, i <= N Items( selection ), i++,
colNum = Contains( dtColList, Name Expr( selection[i] ) );
vMat = dtMat[0, colNum];
mis = Loc( Is Missing( vMat ) );
If( N Row( mis ),
col = column(selection[i]);
If( mis[1] == 1,
col[1] = col[(Loc( vMat ))[1]]
);
For( j = if(mis[1]==1, 2, 1), j <= N Row( mis ), j++,
col[mis[j]] = col[mis[j] - 1]
);
);
);
回复:填寫缺失的單元格將腳本放入插件或將其放入菜單選項是我忘記實現它的公式的拐杖,
這是另一個簡單的公式。
:Complete 是公式所在的新列。
:Missing 是缺少行的源列。
//帶字符的行
如果(:缺少==“”,
:完成[行() - 1,空()],
:失踪)
//帶數字的行
如果(失踪(:失踪)== 1,
:完成 [Row() - 1, Empty()],
:失踪)
回复:填寫缺失的單元格我想知道如果沒有表達式是否可以做到這一點。 對於單列“MyCol1”,您可以做某事。像這樣:
對於每一行(如果(不見了( MyCol1 ) , : MyCol1 =落後( MyCol1 , 1 ) ) ) ;
使用自動化的方法來選擇列,就像你做的那樣,結合這個應該可以做到。