通过选择特定行的 Col (Sum) 函数<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我想创建一个列来计算其他列的平均值或总和,但我想通过以下方式指定该函数:
假设我们选择“年份”进行计算的年份,或者,
假设按年计算的 NetRevenueWithoutVat 的列(总和)或按“月份(住宿日期)”计算的“NetRevenueWithoutVat”或
特定行号的 Col (Sum) 函数...
有人可以分享他/她的知识吗如何在脚本中或通过在列中输入 Col(Sum) 函数作为公式来完成此操作?
其背后的逻辑是什么?
非常感谢

回复:通过选择特定行的 Col (Sum) 函数您必须创建一个单独的列,其中包含要使用的每个日期范围的分组列,或者您可能希望使用类似以下内容的内容:
Col Sum(
If(
:Event Date >= Informat( "02/01/2001", "mm/dd/yyyy" ) & :Event Date <=
Informat( "02/28/2001", "mm/dd/yyyy" ),
:Total Fatal Injuries,
0
)
)
回复:通过选择特定行的 Col (Sum) 函数没关系,明白了!
列总和(
:结算金额,
:日期 >= 2018 年 8 月 1 日 & :日期 <= 2018 年 8 月 7 日,
:卡号
)回复:通过选择特定行的 Col (Sum) 函数请原谅我,但我是 JMP 新用户。 我只使用公式编辑器,没有使用 JSL。 我不确定你给我的是 JSL 还是论坛编辑器。 我不能像这样将条件代入公式吗?
苏姆山口(:结算金额, :日期 >= 8 / 1 / 2018年& :日期 <= 8 / 7 / 2018年,:卡号)
除了我遇到的问题是 JMP 正在将其自动更正为除法,而不是日期公式。
回复:通过选择特定行的 Col (Sum) 函数@米奇103 ,
尝试像这样的建议@多发性硬化症:
dt = Current Data Table();
dt << Select Where(:Date > StartDate & :Date <ENDDATE></ENDDATE>
回复:通过选择特定行的 Col (Sum) 函数您能够使用此公式并定义特定列的逻辑吗? 例如,我试图对两个日期之间每条记录的美元金额进行求和。 所以公式看起来像这样:
苏姆山口(:美元金额,:日期)
但我不确定如何定义日期范围。
回复:通过选择特定行的 Col (Sum) 函数当我使用
Col Sum( :ColumnName, Selected() )
我收到以下错误:
Row number not set or in range in access or evaluation of 'Selected' , Selected/*###*/()
有人可以告诉我可能会发生什么吗?
回复:通过选择特定行的 Col (Sum) 函数您的示例代码:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
Col Sum() 函数在开放代码中与在公式中的运行方式不同。 在处理开放代码中的数据时,如果存在第二个元素,JMP 无法执行该语句,因为结果值将返回多个值。 也就是说,示例中的返回值需要变量“n”有 2 个值。 选定行的 Col Sum() 和非选定行的 Col Sum()。 我想, JMP 可以返回一个值列表,但作为@多发性硬化症表明 Summarize() 函数用于此目的。 因此,Col Sum() 函数中的第二个元素在开放代码中无效的原因。
回复:通过选择特定行的 Col (Sum) 函数@tx尼尔森:
谢谢 。 虽然我很熟悉这种方法 - 但令我惊讶的是它的方式@多发性硬化症正在解决同样的问题。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected()))); // This Works
dt << select Where(:age == 12);
n = Col Sum(:age,Selected()); // This yields an error 虽然我知道第 4 行可以轻松地替换为您的解决方案,即这是我的首选解决方案,
n = Sum(:age[dt << Get Selected Rows]);
我不明白为什么这行代码在我的例子中会导致错误。
n = Col Sum(:age,Selected());
文档没有显示此功能存在(至少在 JPM 12 中) - 所以对这个新技巧真的很兴奋,但它似乎在这种情况下有效@多发性硬化症之前的问题已经解答了。 你们中的任何一个人都可以解释为什么完全相同的代码在列公式中有效但在外部抛出错误吗?
乌代
回复:通过选择特定行的 Col (Sum) 函数Col Stat() 函数主要在列公式中有用,并且使用可选的分组参数,它们根本不能作为独立函数使用(然后使用 Summarize() 代替)。
我的旧帖子旨在展示如何通过手动(或通过脚本)选择行来动态更新列。 更多的是一个巧妙的技巧而不是任何非常有用的东西......
例子:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected())));
dt << select Where(:age == 12);
// Or select rows by hand and see how numbers change dynamically
回复:通过选择特定行的 Col (Sum) 函数您想要做的是使用将数据表中的值作为数据向量进行引用的功能,并将所选行的矩阵传递给它
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age == 12);
n = Sum(:age[dt << Get Selected rows]);回复:通过选择特定行的 Col (Sum) 函数@ian_jmp / @多发性硬化症/ @tx尼尔森- 有什么想法吗 ?
回复:通过选择特定行的 Col (Sum) 函数
该解决方案仅适用于特定版本的 JMP 吗?
因为我正在使用 JMP 12 并且不断遇到此错误
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
这是我的日志
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << 选择其中( :age == 12 );
n = Col Sum( :age, 所选/*###*/() );
行号未设置或在“Selected”的访问或评估范围内,Selected/*###*/()
回复:通过选择特定行的 Col (Sum) 函数是的,支持多个分组变量。
回复:通过选择特定行的 Col (Sum) 函数谢谢你!
这就是我一直在寻找的。
这是否意味着我可以进一步说苏姆山口( :不含增值税净收入, :年份,:机构)?
回复:通过选择特定行的 Col (Sum) 函数在列公式中使用 ColSum()。 公式苏姆山口( :不含增值税净收入, :年)将返回按以下分组的总和(不是累积总和)年。
尝试使用以下公式创建随行选择动态变化的 ColSum():
苏姆山口( :不含增值税净收入,已选择() )
回复:通过选择特定行的 Col (Sum) 函数答案可能取决于接下来会发生什么。 你当然可以这样做:
NamesDefaultToHere(1);
// (1) Get some data
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
// (2) Get summary info into a list and a vector
Summarize(groups = By(:sex), groupMeans = Mean(:height));
// (3) Make a table using the summary info
dt2 = NewTable("Height by Gender",
NewColumn("Gender", Character, Nominal, Values(groups)),
NewColumn("Mean Height", Numeric, Continuos, Values(groupMeans))
);
(有关 Summarise 的更多选项,请参阅 JSL 脚本指南)。
如果您需要第 3 步,则最好使用“表格 > 摘要”或“分析 > 制表”。
您还可以聚合任何行集,只要您可以表达该选择是什么。