如何将公式列更改为变量?我正在使用第一个公式列作为中间结果,以便重新计算结论是第二个正式专栏。第二列使用第一个公式列的结果。
有没有简单的方法来避免第一个公式列,例如创建一个varaibele?我的 JSL knolodge非常基础。
提前致谢。
Re:如何将公式列更改为变量?感谢您的回复。
你能告诉我如何结合 col quantile()行函数与矩阵版本?
Re:如何将公式列更改为变量?正如您所说,If satement公式可以很好地获取NewDataCorr值。
我确实使用新列更新了您的文件:NewDataCorr 2。在此列中,使用了If语句公式。我没有使用DataTmp列中的值,而是使用DataTmp公式表达它们:
如果(:P1 == 0&:P2
,
:DataRaw
)
在这种情况下,我摆脱了DataTmp列。 您对此解决方案有何看法?
Re:如何将公式列更改为变量?Cameron的解决方案应该非常快,即使在100K +行上也是如此。
另一件事,使用col quantile()函数对数据表公式中的每一行进行求值,这样会使事情变慢。在矩阵版本中,它只被评估一次。
Re:如何将公式列更改为变量?我上传了example.jmp文件。我的具体问题是,w hat是避免创建colums的最佳方法:DataTmp和:FlyerTmp以获取colums:DataCorr借助于colums:P1,:P2和:DataRaw?
根据JSL用户的说法,最好在列表或规则的帮助下计算这些列,特别是如果数据集很大的话。
Re:如何将公式列更改为变量?感谢您的JSL建议。 我很想测试脚本。 现在我无法检查这个(没有访问JMP)。
我想知道如果它们是0,如何从原始列DataRaw处理数据?
Re:如何将公式列更改为变量?感谢您的回复。
我想摆脱tmp列,以保持数据集尽可能简单。示例文件是关于我的问题的非常基本的文件。在实践中,数据集包含大约10到15个不同的DataRaw列,我喜欢以相同的方式准备。还添加了其他不同的列。
你对FlyerTmp专栏是正确的。它可以包含在DataCorr列中。我稍后会检查你的文件(现在无法访问JMP)。
Re:如何将公式列更改为变量?想到了什么。 在计算分位数之前,您必须从temp中删除零,因为这些零将被包含在内。 你可以通过在x98之前运行它来做到这一点。
miss_rows = loc(as list(temp),0);
temp[miss_rows] = .;
在创建新列之前,您也可以为“final”执行相同的操作。 这将消除在最后替换缺失值的需要。
Re:如何将公式列更改为变量?感谢您发布样本数据表。
由于您只想计算某些行的分位数,因此您必须拥有基于新公式的列。 因为你已经使用dataTmp做了这个,这是一个很好的方法来继续。但是,您不需要flyerTmp,因为所有这些都是您在dataCorr中使用的条件。您可以直接将该条件放入dataCorr。
我在附加的数据表中完成了这个,有100,100行。这很快。
我很好奇为什么你担心摆脱中间栏?知识分子的好奇心还是其他一些问题?
Re:如何将公式列更改为变量?尝试这样的事情。 这个想法是将数据与布尔值向量进行元素相乘,这是您的逻辑条件。 这应该是相当快的,但我承认我远不是计算效率最高的专家。
dt = Current Data Table();
//Get values for other columns
raw = dt:DataRaw << Get Values;
P1vals = dt:P1 << Get Values;
P2vals = dt:P2 << Get Values;
//Compute equivalent of DataTmp
temp = (P1vals == 0 & P2vals < 3):*raw;
//Compute 98th percentile of temp
x98 = quantile(0.98, temp);
//Compute final column
final = (temp <= x98):*temp;
dt << New Column("DataCorr", << Set Values(final));结果将为0而不是丢失。 你可以使用类似的东西替换缺少的值(尽管如果你的表中仍然有原始的DataCorr,前一个脚本将产生一个“DataCorr 2”列,并且这个代码行将不在右列上工作)。
//Replace 0s with missing
dt:DataCorr[dt << Get Rows Where(:DataCorr == 0)] = .;
Re:如何将公式列更改为变量?你好卡梅伦 ,
附上了example.jmp文件。避免创建colums的最佳方法是什么:DataTmp和:FlyerTmp以获取colums:DataCorr借助于colums:P1,:P2和:DataRaw?
这适用于行数超过100,000的数据集。
托马斯
Re:如何将公式列更改为变量?只需查看几个细节:
1。第一列中的所有行的值是否相同?
2。您是否编写了列的添加脚本?
- 可能的是将第一个结果计算在内存中,作为矩阵中的单个列,然后,如果您需要这些值,只需从矩阵中获取它们并使用这些值创建一个新列。通常这比添加一个colum更快,并且在表中更新它(对于非常高的表)。
- 更好的是,在矩阵中(在内存中,而不是在表中)进行两种计算,然后将结果发回表中。
- 如果第1列中的所有值都相同,那么可以在脚本中计算它,并将其作为表格添加到数据表中
变量并引用第2列中的变量。
很多好的选择,但它们都取决于你想要做的事情。
Re:如何将公式列更改为变量?如果您需要更精确的帮助,则必须发布一个有效的示例。
Re:如何将公式列更改为变量?谢谢你的解决方案。有用。但是,如果在公式中使用某些状态,这可能会减慢计算速度。
Re:如何将公式列更改为变量?您是否可以从第一列复制公式,并将其粘贴到第二列的公式中,无论引用第一列的位置是什么?