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

幾乎可以肯定,跨空單元格工具將滿足您的要求。
回复:填寫缺失的單元格我有一個情況,我想根據標籤列在表的塊中向前和向後填充多個列的值。 經過所有這些討論,我認為沒有一種優雅的方法可以做到這一點——如果我錯了,請糾正。
我必須說,對於 1-liner 來說,這些是一些極其複雜的解決方案:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.DataFrameGroupBy.fillna.html
回复:填寫缺失的單元格你好,
如果可能有一個更優雅的版本,這兩個選項應該可以工作。
附件是一個數據表,其中包括一個 tavble 腳本,可以執行您想要的操作(我認為)。 此外,還有一個帶有使用 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來搜索和替換。
兒子有很多選項可供您選擇。 我非常喜歡重新編碼。 在腳本編寫中,我可能會使用另一種方法:將列保存在矩陣或列表中,因為您想要使用非數字值“na”,這會將值更改為字符,將缺失值更改為 na,然後將值寫回到列值。 希望這些想法之一能進一步幫助您
回复:填寫缺失的單元格我有一個包含 2 列的數據表。 需要檢查 def、jkl、mno 和 tu 的值是否為空,並為這些條目填寫“NA”。
任何幫助表示讚賞。
| 範圍 | 價值 |
| ABC | 5 |
| 定義 | |
| 吉 | 22 |
| jkl | |
| 米諾 | |
| 普格 | 3 |
| 斯圖 | |
| 沃克斯 | 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 scriptData 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 是缺少行的源列。
//帶字符的行
如果(:缺少==“”,
:完成[Row() - 1, Empty()],
:丟失的)
//帶數字的行
如果(缺失(:缺失)== 1,
:完成[Row() - 1, Empty()],
:丟失的)
回复:填寫缺失的單元格我想知道是否可以在沒有表達式的情況下做到這一點。 對於一列“MyCol1”,您可以做某事。像這樣:
對於每一行(如果(不見了( MyCol1 ) , : MyCol1 =落後( MyCol1 , 1 ) ) ) ;
使用像您這樣的自動化方法來選擇列與此相結合應該可以做到。