推 DavidDX: 有點看不太懂,但是整體來說是不管有幾筆資料,只要其中 11/21 21:47
→ DavidDX: 一筆資料的results 1有OK的結果,就是OK。 不知道我這樣 11/21 21:47
→ DavidDX: 理解是否對? 11/21 21:47
推 fox1375: 不用group_by有什麼特殊考量嗎?迴圈應該會比較慢 11/21 22:10
推 Wush978: 因為你的邏輯有順序問題,建議用SQL的window clause 11/22 08:47
→ Wush978: R我目前不知道有沒有window clause的替代品 11/22 08:48
推 lycantrope: 沒有順序問題吧,最終結果不就只是看有OK就取OK. 11/22 09:47
對,沒有順序問題,只要同一個product&sku的result1-4分別有出現過OK,就取OK,
如果該組合沒有其他資料,或是過去都NG,就維持最後一筆的結果。
※ 編輯: bedroom0204 (211.23.35.151 臺灣), 11/22/2022 14:40:03
→ SonicJuice: 看起來可以拆分兩部分作業, 在每組product, sku找出 11/22 18:09
→ SonicJuice: 一個符合你要求的date, 再找出result1-4的適合值, 最 11/22 18:09
→ SonicJuice: 後再merge起來 11/22 18:09
→ SonicJuice: 第一部份, 先把ok/ng轉換成1/0,逐row加起來(ok_cnt), 11/22 18:13
→ SonicJuice: 每組product,sku依ok_cnt大至小排序, date早到晚排 11/22 18:13
→ SonicJuice: 序, 再取出每組第一個row, 就會是所求的date 11/22 18:13
→ SonicJuice: 第二部分, 每組product, sku找出max(result1)到max(r 11/22 18:15
→ SonicJuice: esult4) 11/22 18:15
→ SonicJuice: 最後用product,sku作為key去merge兩個部分, 應該就是 11/22 18:19
→ SonicJuice: 你要的結果, btw我前面的date排序好像講反了 11/22 18:19
→ andrew43: 參考 data.table,也一併說明做法了。 11/23 11:02
推 hohiyan: 既然 日期時間(Date) 這個欄位都是採最新的一筆資料 11/25 11:18
→ hohiyan: 那用 排序 + group + long/wide date 應該就可以解決了 11/25 11:20