[算表] EXCEL函數:FREQUENCY演算法
FREQUENCY(data_array,bins_array)
計算某一個範圍內的值出現的次數,並傳回一個垂直數值陣列。
其中Bins_array(以下簡稱bin)預期使用者輸入升冪數列。
說明檔:
"如果 bins_array 沒有數值,則 FREQUENCY 傳回 data_array 中元素的個數。"
但測試結果,bin參照的儲存格若空白,當作0來處理,
因此似乎說明檔說明錯誤?
當bin不是升冪數列時,可以檢視FREQUENCY的演算法。
(此演算法不一定正確,為測試結果)
演算法:
歸於第一個 "大於等於被分類數" 的分界點中
最接近被分類數的分界點
如果被分類數大於所有分界點(如此則上句結果為空)
歸於最後一組
具體步驟如下:
1. 由前往後找
2. 當分界點=被分類的數,則歸類
3. 當分界點<被分類的數,去除
4. 在剩於的分界點中,求出分界點最小值
5. 在剩於的分界點中,歸於第一個符合最小值的組。
6. 無最小值時,歸於最後一組。
好,大概看不懂上面在寫什麼,先看正常例子
假設要分類1 2 3 8共4個數
bin為{2;5;7}共三個分界點
會有三+1個答案
因為三個分界點,會分出四個組。
現在函數要把4個數分到這四個組裡,怎麼做呢?
開始
拿著(第一個data)1,
(bin-data)
2-1=1 >0 第一組:1
5-1=4 >0 第二組:4
7-1=6 >0 第三組:6
第一組為最小正值 →一
拿著2,
2-2=0 =0 第一組:TRUE →一
拿著3,
2-3=-1 <0 第一組:FALSE
5-3=2 >0 第二組:2
7-3=4 >0 第三組:4
第二組為最小正值 →二
拿著8,
2-8=-6 <0 第一組:FALSE
5-8=-3 <0 第二組:FALSE
7-8=-1 <0 第三組:FALSE
無最小正值 →四
統計數量={2;1;0;1}
輸出。
此為=FREQUENCY({1;2;3;8},{2;5;7})之結果。
----------------------------------------------------
假設bin亂改為(因規定要升羃){7;5;2}
開始
拿著1,
7-1=6 >0 第一組:6
5-1=4 >0 第二組:4
2-1=1 >0 第三組:1
第三組為最小正值 →三
拿著2,
7-2=5 >0 第一組:5
5-2=3 >0 第二組:3
2-2=0 =0 第三組:TRUE →三
拿著3,
7-3=4 >0 第一組:4
5-3=2 >0 第二組:2
2-3=-1 <0 第三組:FALSE
第二組為最小正值 →二
拿著8,
7-8=-1 <0 第一組:FALSE
5-8=-3 <0 第二組:FALSE
2-8=-6 <0 第三組:FALSE
無最小正值 →四
統計數量={0;1;2;1}
此為=FREQUENCY({1;2;3;8},{7;5;2})之結果。
-----------------------------------------
有重覆的bin如{5;5;2}
拿著1,
5-1=4 >0 第一組:4
5-1=4 >0 第二組:4
2-1=1 >0 第三組:1
第三組為最小正值 →三
拿著2,
5-2=3 >0 第一組:3
5-2=3 >0 第二組:3
2-2=0 =0 第三組:TRUE →三
拿著3,
5-3=2 >0 第一組:2
5-3=2 >0 第二組:2
2-3=-1 <0 第三組:FALSE
第一、二組為最小正值,歸入最前者 →一
拿著8,
5-8=-1 <0 第一組:FALSE
5-8=-3 <0 第二組:FALSE
2-8=-6 <0 第三組:FALSE
無最小正值 →四
統計數量={1;0;2;1}
此為=FREQUENCY({1;2;3;8},{5;5;2})之結果。
-----------------------------------------------
總之呢,
如果剛好等於分界點,就歸在那組,
不然就在所有更大的分界點中,找最接近的;
有重覆的,歸在第一個,
萬一沒有更大的分界點,就歸在最後一組。
目前測試結果,都符合,
如果有例外,歡迎告知^^~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.50.149
※ 編輯: JieJuen 來自: 218.164.50.149 (12/07 06:33)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
Office 近期熱門文章
PTT數位生活區 即時熱門文章
157
236