配方应用IF(月(A151)=月(A150),NA(),COUNTIF(W151:W181,1)*100/(COUNTIF(W151:W181,1)+COUNTIF(W151:W181,0))) 。这是 Excel 中用于创建新列的公式,其中 A 列有日期,W 列仅包含 0 和 1 作为值。如果我们有 A 和 W 列值,如何在 JMP 中应用相同的公式。
高级统计建模回复:公式应用我认为我的示例就是这样的 - 而且它似乎在我附加的文件中起作用了。我想知道它为什么不起作用,但您的评论没有提供任何有用的信息。与您的初始请求类似,您应该提供更多详细信息,以便我们了解您想要什么以及建议为什么不能实现这一点。
回复:公式应用这是我处理这个问题的方法。
Loc() 函数返回一个矩阵,其中包含矩阵中与 Loc() 函数中第二个参数匹配的所有值。所以
给出一个矩阵
[1,0,1,1,.,5]
然后
Loc( [1,0,1,1,.,5], 1 )
将返回矩阵
[ 1, 1, 1 ]
因此,计算矩阵中的行数即可找到 CountIF ,这很简单
Length( Loc( [1,0,1,1,.,5], 1 ) )
这将返回值 3
这是完整的公式
If( Month( :A ) == Lag( Month( :A ) ),
.,
wMatrix = :W[Index( Row(), Row() + 29 )];
(Length( Loc( wMatrix, 1 ) ) * 100) / (Length( Loc( wMatrix, 1 ) ) + Length( Loc( wMatrix, 0 ) ));
)
通常在 JMP 中,人们会尝试避免根据数据表中的特定行数进行计算。当前的讨论就是一个很好的例子。为了使上述公式正常工作,数据表要求在月份更改后找到 30 行,以便进行计算。我们都知道,不同的月份有不同的天数。以下对上述公式的更改显示了如何根据查找当前月份的所有数据进行计算,而不管该月有多少天
If( Month( :A ) == Lag( Month( :A ) ),
.,
wMatrix = :W[Current Data Table() << get rows where(
Year( :A ) == Year( :A[Row()] ) & Month( :A ) == Month( :A[Row()] )
)];
(Length( Loc( wMatrix, 1 ) ) * 100) / (Length( Loc( wMatrix, 1 ) ) + Length( Loc( wMatrix, 0 ) ));
)
回复:公式应用您能否提供包含所有所需列+预期结果列的示例表作为 JMP 表。比尝试将没有任何数据的 Excel 公式转换为 JMP 公式更容易理解问题。你可能只需要类似的东西
列累计和(:W, :A) 或列总和(:W, :A)
回复:公式应用非常感谢您的回复。我应用了这个公式,但这给出了累积总和,但在我的情况下,每当月份发生变化时,我都需要获取接下来 30 天的 0 和 1 的计数
回复:公式应用你好-
我刚开始回复,就注意到了另一条帖子。这可能是另一种选择……

笔记:
月份函数将返回任何日期/时间戳编码数字的月份部分,与 Excel Month() 函数相同。
IF 将检查当前行是否不在月份边界上 - 这将返回 JMP“Missing”,其行为可能与 Excel NA() 略有不同。
由于这些值的编码为 1 和 0,因此只需对接下来的 30 行取平均值,而不是 {Count 1/(count 0 + count 1)}。
当在面向电子表格的公式和 JMP 数据表之间转换时,其公式的作用类似于 Excel 相对引用(滞后、移动平均)...
* 仔细检查顶部和底部的行为,以确保操作符合预期*。将 Excel 中“上一行”的相对引用复制到第一行会返回 #Ref! 错误,JMP Lag(1) 函数会在第一行返回缺失值。另外,当剩余行数小于 30 时,请查看 JMP 滚动平均值的具体情况……(可能没问题——只要你多加留意)。可以在 JMP 公式中添加一个额外的条件语句来解决这个问题……if (row()==1,这是针对第一行的特殊情况,否则使用滞后函数)。
描述没有给出表格设计的基本原理,但如果目的是找到当前月份内 1 个值的部分,并且假设每个月有 30 行按顺序排序......还有另一种方法可以适应# rows/month <>30 和行排序...选择日期/时间戳列 A - 右键单击>新建公式列>日期/时间>“月份年份”。...
然后创建一个新的公式列来查找该月/年的“平均”W Col Mean( :was_W, :"Month Year[was_A]"n ) * 100,如果需要,可以使用类似的条件来查找边界行
回复:公式应用你的要求有点不清楚,但我想我已经接近你想要的了 - 请参阅附件。我创建了一列随机日期,然后对它们进行排序。 W 列是由 0 和 1 值组成的随机向量。该公式计算月份变化后接下来 30 天内 1 值的分数。如果这不是您想要的,您可以更清楚地解释它或发布一个简单的示例。请记住,JMP 不是电子表格,因此 CountIF 等 Excel 公式并不总是能很好地翻译。