通過選擇特定行的 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 步,則最好使用“表格 > 摘要”或“分析 > 製表”。
您還可以聚合任何行集,只要您可以表達該選擇是什麼。