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