[算表] EXCEL函數:FREQUENCY演算法

看板Office作者 (David)時間18年前 (2007/12/07 06:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
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)
文章代碼(AID): #17M7X60I (Office)
文章代碼(AID): #17M7X60I (Office)