2014-10-16 33 views
-1

我有一個數據幀具有例如重複值的行:R返回只有一行的每個值在矢量

id 
A 
A 
A 
B 
B 
C 
C 
D 
D 

我想要實現的是,對於每個僅保留一個值的代碼行在另一矢量值,例如在:

keeps <- c("A", "C") 

結果應該是這樣的:

id 
A 
C 
+0

你要哪一個的三排和C的兩排,以保持?第一個,最後一個,隨機? – 2014-10-16 16:53:21

+0

首先會很好,但是對於所有可能的方式都要加分 – gh0strider18 2014-10-16 16:55:48

+0

也許'?unique'? – hrbrmstr 2014-10-16 16:58:15

回答

1

試試:

df[df$id %in% c("A", "C") & !duplicated(df$id),,drop = FALSE] 
# id 
# 1 A 
# 6 C 

或本:

unique(df[df$id %in% c("A", "C"),,drop = FALSE]) 
# id 
# 1 A 
# 6 C 
+0

第一個做到了!所以我在df $ id中進行子集化,並保持AND如果df $ id被重複,我沒有複製該行......但drop = FALSE會做什麼? – gh0strider18 2014-10-16 17:14:57

+0

對於一列數據幀(或矩陣),「drop = FALSE」將使結果保持爲一個數據幀,而將結果保留爲數據幀將使結果摺疊爲一個向量。嘗試兩個並檢查差異 – 2014-10-16 17:16:06