在一个不存在于另一个变量中的变量中找到唯一因子

时间:2015-04-30 15:01:50

标签: r dataframe

我在同一数据框中的R中有两个变量因子列表,每个变量都有一些重复:

v1 <- c("a1","a1","b2","b2","d4","c3","d4")
v2 <- c("a1","c3","d4","d4","e5","f6","g7")
A = data.frame(v1, v2)

目标是返回v1中v2中不存在的每个值,但每个唯一值只返回一次。基于this thread,我尝试了下面的代码,返回&#34; b2 b2&#34;:

A$v1[!A$v1 %in% A$v2]

我希望使用的实际数据超过50,000个案例,v1中的每个值最多出现100次。返回100个结果后,使用与上述%相同的函数截断,但由于v1中的重复,所有值都相同。

总而言之,我如何查询上面的数据框并仅返回值&#34; b2&#34;一次?

2 个答案:

答案 0 :(得分:3)

您可以尝试setdiff()

with(A, setdiff(v1, v2))
# [1] "b2"

答案 1 :(得分:2)

你快到了。只需将其包装在unique()

unique(A$v1[!A$v1 %in% A$v2])

或不在数据框中组合向量:

unique(v1[!v1 %in% v2])

如果要将结果保存在新变量中:

uni <- unique(A$v1[!A$v1 %in% A$v2]) 

如果你想降低等级:

uni <- droplevels(unique(A$v1[!A$v1 %in% A$v2]))