填写缺失的单元格<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 ) ) ) ;
使用像您这样的自动化方法来选择列与此相结合应该可以做到。