繁体   English   中英

如何通过行 id 识别数据框列中的值而不是另一个数据框列中的值?

[英]How do I Identify by row id the values in a data frame column not in another data frame column?

如何通过行 id 识别数据框d2c3中不在数据框d1c1中的值? 我的 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会在这里工作。 我看到zF是你想要的,对吧? 它们不在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM