如何使用 JSL 替换带有“0”的缺失值<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />如何使用 JSL 替换带有“0”的缺失值?
我可以使用“查找并替换全部”手动执行此操作,但我需要将其合并到每天自动运行的代码中。
回复:如何使用 JSL 替换带有“0”的缺失值当我使用播放按钮从脚本窗口运行它时,这是有效的,但不能在调试器中运行它,也不能通过 .jsl 的自动运行来启动它。
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
拉金卡津
JMP13.2.1
回复:如何使用 JSL 替换带有“0”的缺失值当然,我很欣赏这句警告。我肯定,没有考虑过。
同样重要的是要记住,丢失的数据可能是有价值的数据,有时最好保持原样!
回复:如何使用 JSL 替换带有“0”的缺失值这都是真的。我觉得是时候竖起“警告”旗帜了。只因为我们能在 JMP 中做某事并不总是意味着我们应该。
回复:如何使用 JSL 替换带有“0”的缺失值虽然你说的是真的,但它对数据做出了假设。例如,也许他的数据不是连续的?有时 0 不会被记录,而是会被视为缺失。如果有人尝试使用 0 为假、1 为真进行单向分析如果他们的零最终显示为丢失,他们就会遇到问题,因为 Oneway 分析会忽略 JMP 中缺失的行。他们最终只会得到一个类别!
还有其他原因 0 可能会显示为缺失。通常在大型数据库中存储 0 是浪费空间。由于 Pokemon Go 现在很强大,我将用它作为例子。我可能想记录我一天抓到的所有神奇宝贝,12 只拉塔和 6 只小波弟。然而,我不想为那天我没有抓到的其他 148 个神奇宝贝存储 0。如果我这样做了,我很快就会用无用的信息填满我的数据库。因此,如果我查询我的数据,我会在任何给定时间丢失大部分神奇宝贝,但丢失是 = 到 0。
在类似的情况下,您可能会丢失数据,相当于 0 b/c 的数据转换问题、设计不当的查询等。
回复:如何使用 JSL 替换带有“0”的缺失值很抱歉参加这个聚会迟到了,但我觉得有必要插一句:将缺失值设置为零(或平均值或任何其他单一插补方法)有严重的缺点。大多数这些方法都会产生有偏差的参数估计,即使在数据完全随机丢失的理想条件下也是如此。有很多更好的方法来处理丢失的数据。
回复:如何使用 JSL 替换带有“0”的缺失值由于没有其他人回答,解决方案是相同的,只需抓取字符列并将行设置为等于您认为合适的字符 - 在下面的情况下为“N/A”。
请注意,设置它 =0 会将列更改为数字,并将删除所有字符数据,但是 ="0" 应该没问题。
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
回复:如何使用 JSL 替换带有“0”的缺失值凉爽的! ...在最后两行中,clsRej 应该替换为 clsMat,对吗?
同时对于字符列我们有类似的解决方案吗?
回复:如何使用 JSL 替换带有“0”的缺失值其他方式...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
ETC。
逻辑索引通常比循环更快
回复:如何使用 JSL 替换带有“0”的缺失值谢谢大家!
干杯!
回复:如何使用 JSL 替换带有“0”的缺失值另一种方法是使用单个循环(仅限数字列)。
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
回复:如何使用 JSL 替换带有“0”的缺失值这本质上与 exj 的响应相同,但更清晰一些。确实如此;但是,仅更改数字列中缺少的内容。
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
回复:如何使用 JSL 替换带有“0”的缺失值我会避免使用 j 作为循环变量,因为它也是一个 JSL 函数。
J(n行, , <值>)
功能:创建相同值的矩阵。
返回:矩阵。
论据:
行:矩阵中的行数。 如果恩科尔斯没有指定,行数也用作恩科尔斯。
ncol:矩阵中的列数。
价值:用于填充矩阵的值。 如果价值未指定,则使用 1。
回复:如何使用 JSL 替换带有“0”的缺失值你好,
这是基于“Jump into scripting”一书。 我用 z 替换所有缺失值。
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
希望这可以帮助。