R_Language 板


LINE

假設有一個 data frame 只有兩個變數 X Y, 其數值如下: X Y 1 2 1 3 2 4 2 6 3 2 3 7 . . . 那我希望能夠去除出現重複元素的 rows, 所以就會剩下: X Y 1 2 3 7 . . . 目前是用 for loop,但由於資料量較大導致會花上不少時間, 想請問有沒有其他方法可以更快解決?謝謝 -- 這是我老婆,如果你之前沒看過,現在再看一次 https://imgur.com/o8uCC4R --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.241.130.39 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1613480106.A.182.html
1F:推 andrew43: unique(...) 02/16 21:05
2F:→ xiangying: 嗯...我試過 unique, distinct 跟 duplicate,但這些滿 02/16 21:17
3F:→ xiangying: 足不了需求,還是說有什麼參數是我沒注意到的? 02/16 21:17
4F:推 wenbuneatble: 兩個欄分別distinct之後再bind_cols即可 02/16 21:34
5F:→ locka: 你的需求有順序問題,意即row1的(1,2)如果選擇留下,row2的( 02/16 21:36
6F:→ locka: 1,3)就需排除,這種情況下自己寫loop可能是最好的方法,向 02/16 21:36
7F:→ locka: 量化寫法比較難控制先後順序 02/16 21:36
8F:→ wenbuneatble: distinct(df, X) %>% bind_cols(distinct(df, Y)) 02/16 21:36
9F:→ locka: 樓上如果兩個欄位各自distinct後數量不一樣,這樣還可以bin 02/16 21:39
10F:→ locka: d嗎? 02/16 21:39
11F:→ xiangying: 兩個各自distinct無法達到要的效果(以上面為例,X=2的 02/16 21:56
12F:→ xiangying: rows不會被砍掉) 02/16 21:56
13F:→ xiangying: 如同L大所說,想知道是不是只剩下loop這方法,不然就是 02/16 21:58
14F:→ xiangying: 要寫一個底層的函數或是用foreach之類的來加速 02/16 21:58
15F:→ xiangying: 補充說明一下,在考慮該row 是否要被移除,就是看該row 02/16 22:16
16F:→ xiangying: 的每個值是否在前面的rows任意的變數中出現過 02/16 22:16
17F:→ showfeb: 試試遞迴 https://ideone.com/h9p8Rn 02/16 22:19
18F:推 cywhale: (2,4) or (2,6) 為什麼在預設答案中沒有一個留下? 02/16 22:30
19F:→ xiangying: 謝謝S大的程式碼,又學了一課,是快上不少,雖然在實際 02/16 22:41
20F:→ xiangying: 數據上還是需要數以分鐘的計算時間,但應該是目前較快 02/16 22:41
21F:→ xiangying: 的方法 02/16 22:41
22F:→ xiangying: C大,因為row 1的(1,2)導致後面的rows的X與Y不能出現 02/16 22:42
23F:→ xiangying: 1或2 02/16 22:42
24F:推 cywhale: so若先刪x,y共有重複,再刪x,y各自重複,再刪互有重複? 02/16 22:58
25F:→ cywhale: https://ideone.com/NFdoyO 02/16 22:58
26F:→ cywhale: 啊我沒有做一般性測試 最後列可能有bug..sorry..概念參考 02/16 23:03
27F:→ xiangying: 不會,感謝您的想法,明天來測一下真實數據能多快,謝 02/16 23:14
28F:→ xiangying: 謝 02/16 23:14
29F:推 locka: 感謝17樓S大提供的做法,原來有apply(df,2,"%in%"…)這種寫 02/16 23:35
30F:推 locka: 法 學習了~FUN的部分竟然能以字串的方式放pipe運算子,好神 02/16 23:35
31F:推 locka: 奇 哈哈 02/16 23:35
32F:→ locka: C大的做法的確有bug喔(一樣也是順序的問題),剛剛幫忙測過 02/16 23:38
33F:→ locka: 了~遞迴寫法不好寫 S大厲害!! 02/16 23:38
34F:推 evilove: 為什麼我完全看不懂原po的需求@@.. 02/17 13:40
35F:→ Gjerry: 原po 希望得到一個 data.frame 裡面的每個 row 包含的x y 02/17 15:36
36F:→ Gjerry: 都沒出現在該 row 之前的任一 row 中 02/17 15:36
37F:→ Gjerry: 然後這些 row 都來自一個給定的 data.frame 02/17 15:37
38F:→ andrew43: row2有y=3了為什麼預期x=3被留下來? 一樣還沒看懂... 02/17 15:57
39F:→ Gjerry: 應該說從第一列開始,記錄一個set包含出現過的 x, y,如 02/17 16:12
40F:→ Gjerry: 果接下來的一列裡面包含此set內的值,就丟棄這列;若無就 02/17 16:12
41F:→ Gjerry: 保留這列,然後將這列x, y放入set中。重複這個步驟到最後 02/17 16:12
42F:→ Gjerry: 一列,然後輸出保留的列。 02/17 16:12
43F:→ Gjerry: https://ideone.com/J1XkGl 02/17 17:36
44F:→ andrew43: for loop的話可能可以在找到對應時馬上排除剩餘所有可能 02/17 18:34
45F:→ andrew43: 對應的列,可以減少大量的圈數。 02/17 18:35
46F:→ andrew43: 這可讓待比對的資料快速地變少。 02/17 18:37
47F:推 locka: A大的做法也不失為一個好方法,效率取決於不重複資料的稀疏 02/17 18:59
48F:推 locka: 程度~ 02/17 18:59
49F:推 andrew43: 嗯對,太稀疏不值得嘗試。 02/17 19:02
50F:推 kokolotl: 借用s大的程式碼當範例 https://ideone.com/0roCLw 02/19 21:20
51F:→ kokolotl: 數字多的時候快一些,提供參考 02/19 21:21







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP