我正在尝试识别数据框中不匹配的值,但不知道如何做到这一点。
# make data frame
a <- data.frame( x = c(1,2,3,4))
b <- data.frame( y = c(1,2,3,4,5,6))
# select only values from b that are not in 'a'
# attempt 1:
results1 <- b$y[ !a$x ]
# attempt 2:
results2 <- b[b$y != a$x,]
如果a = c(1,2,3)
可以工作,因为a
是b
的倍数。然而,我只是尝试从数据框y
中选择所有不在x
中的值,而不知道要使用哪个函数。
发布于 2011-04-28 10:39:13
如果我理解正确的话,您需要对%in%
运算符进行求反。像这样的东西应该是有效的:
subset(b, !(y %in% a$x))
> subset(b, !(y %in% a$x))
y
5 5
6 6
发布于 2011-04-28 09:13:34
尝试设置差异函数setdiff
。所以你会有
results1 = setdiff(a$x, b$y) # elements in a$x NOT in b$y
results2 = setdiff(b$y, a$x) # elements in b$y NOT in a$x
发布于 2018-11-15 20:41:18
您也可以使用dplyr
来完成此任务。查找b
中而不是a
中的内容
library(dplyr)
anti_join(b, a, by = c("y" = "x"))
# y
# 1 5
# 2 6
https://stackoverflow.com/questions/5812478
复制相似问题