2012-12-30 37 views
2

所以我一直在玩R的數據框,儘管我仍然在Python中考慮太多,似乎無法爲我的問題找到解決方案。刪除第一個出現數據幀R

我有一個數據框,其中一列是用戶ID。我想刪除一個號碼的所有第一次出現,例如:

1,2,3,4,3,4,2,1,3,4,6,7,7 

我想有一個像這樣的輸出:

3,4,2,1,3,4,7 

凡第一次USER_ID出現我會刪除但即使重複,也要保留所有其他人。

與python我可能會使用枚舉或循環它。對於R,我已經看到了一些看起來很酷的功能,但我不確定如何將它與數據框一起使用,比如rle。

任何指針都會非常有幫助,因爲現在我對這個問題的最佳方法有點失落。

謝謝大家

回答

6

功能duplicated()將是有益的位置:

x <- c(1,2,3,4,3,4,2,1,3,4,6,7,7) 
> x[duplicated(x)] 
[1] 3 4 2 1 3 4 7 

這工作,因爲duplicated()返回一個邏輯向量指示是否該元素,很好,複製:

duplicated(x) 
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE 

然後你使用這個邏輯矢量將子集(提取)從x中獲得的值。但請注意,在提取I 保留所有重複的值,而不是刪除它們。

要刪除所有重複值的(不是你想要的,但我說明如何),請嘗試否定:

x[!duplicated(x)] 
[1] 1 2 3 4 6 7 
+0

但複製是假設除去除此之外的所有副本爲我的理解 – pavid

+0

@pavid是的,但請注意,我保留**所有重複的元素。就我所知,即使我爲示例數據添加了更多重複值,這也是有效的。 – Andrie

+0

好吧,我有點困惑,因爲我已經使用之前重複只保留一行,顯然它也是這樣工作.. – pavid

相關問題