作者cawaiilulu (across)
看板Statistics
標題Fw: [徵求] 一題資料庫程式 很簡單的
時間Fri Jun 19 11:05:42 2015
我有兩個table
A是 n*6 B是 m*6
那6個 column 分別是 ID v1-v5
要作下列工作
A每次出一row 跟B m個row v1-v5 一一比較
然後要把A比B大的個數算出來 最後找出m次比較最大值 output到 一個新table C
所以 C有 n*2 (id num_大)
id1 0
id2 4
這樣
我寫了一個 就是每次 A出第一row 跟B每row比 等於一次create m*7 那麼大的table
然後找出 最大值 接著刪掉 已經比完的id 再回到A出第一行row 這樣循環
跑n=10萬 row m=50萬 row 一小時都還跑不完
感覺應該有更快的寫法
請大家賜教 怎麼構思更快的寫法 我是用SAS(有的話就太完美)
但其他語言也沒關係 主要是想構思
--
鍵盤小弟........
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 74.135.36.127
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Wanted/M.1434683053.A.9F9.html
※ 編輯: cawaiilulu (74.135.36.127), 06/19/2015 11:08:07
1F:→ MOONY135: ...這樣的描述法真的非常難懂... 06/19 11:13
2F:→ MOONY135: 所以是A裡面某行的V1~V5都去比B裡面所有行的V1~V5都大 06/19 11:14
3F:→ MOONY135: 的來OUTPUT到C嗎 06/19 11:14
4F:→ MOONY135: if A.v1>B.v1 and A.v2>B.v2 and A.v3>B.v3....etc? 06/19 11:18
第二行是對的
然後 從比較值中找出最大的row (例如有80row 都是5個皆A比B大)
output到C (包含 ID 80) 這樣
5F:→ MOONY135: V1~V5都是數字嗎? 每一列的數字都是固定位數? 06/19 11:31
6F:→ MOONY135: EX V1裡面的值 都不會大於99這樣 06/19 11:31
對 這都沒問題 我已經寫好了 主要是我的寫法跑很慢....
只要構思一個讓這個作法比較快的寫法 資料值不用擔心 謝謝
7F:→ MOONY135: 你之前的語法是怎樣寫的 跟我寫的依樣 IF AND AND? 06/19 11:32
我用ARRY + IF THEN
8F:→ mimi9126: 如果A=(1,1,1,1,1,1), B=(1,0,0,0,0,0),(2,0,0,0,0,0) 06/19 11:56
9F:→ mimi9126: 那output應該是什麼? (1,2)? (1,5)? 06/19 11:57
output是 A1 1
應該是這樣說 A有n row B有m row 每次A出一行 跟B m個一行一行比過
然後 假設m=4 比的結果是
A1 3 (表示A1 跟B1比 v1-v5 有3個比較大)
A1 2
A1 3
A1 1
output 結果 C
A1 2 (找到兩個"最大值" (最大值=3))
10F:→ mimi9126: 那row裡面每個值有範圍嗎,有的話可能要用其他方向做 06/19 12:11
沒關係 這個都不用管 假設就 都兩位以下數字 我主要是想問怎麼寫比較"快"
※ 編輯: cawaiilulu (74.135.36.127), 06/19/2015 12:13:19