2014-10-16 54 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