[英]How do I Identify by row id the values in a data frame column not in another data frame column?
如何通过行 id 识别数据框d2
列c3
中不在数据框d1
列c1
中的值? 我的 which 函数在子设置时返回所有记录,如图所示。 我的要求是遵循这个子集结构,而不是有效value$field
设计:
c1 <- c("A", "B", "C", "D", "E")
c2 <- c("a", "b", "c", "d", "e")
c3 <- c("A", "z", "C", "z", "E", "F")
c4 <- c("a", "x", "x", "d", "e", "f")
d1 <- data.frame(c1, c2, stringsAsFactors = F)
d2 <- data.frame(c3, c4, stringsAsFactors = F)
x <- unique(d1["c1"])
y <- d2[,"c3"]
id <- which(!(y %in% x) ) # incorrect, all row ids returned
我正在尝试查找 y 中指定列不包含 x 值的行的 id
我相信setdiff
会在这里工作。 我看到z
和F
是你想要的,对吧? 它们不在d1[,"c1"]
但在d2[,"c3"]
includes <- setdiff(d2[,"c3"], d1[,"c1"])
d2_new <- d2[d2[,"c3"] %in% includes,]
d2_new$id <- rownames(d2_new)
d2_new
# or
ids <- rownames(d2[d2[,"c3"] %in% includes,])
输出
d2_new
# c3 c4 id
#2 z x 2
#4 z d 4
#6 F f 6
ids
#[1] "2" "4" "6"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.