如何在排除某些值时对数据进行子集化?

时间:2018-05-18 02:21:57

标签: r

我从A列中选取一个值(x)并在B(y)列中查找相应的值。然后我想知道列B(y)中的值是否与列A中的任何其他值相对应。但是,我不希望包含x的原始查询值。

这有点复杂,因为我试图使用lapply

同时使用多个值进行这些搜索
x<-1
result<-data[data$a==x,"b"] 

result1<- lapply(unique(as.numeric(unlist(result))), function(f)     
data[data$b==f,"a"])

上面的代码有效,但result1仍然返回列b = x的值。 我试过用了!为了避免从列a中包含这个值,但是当它工作时似乎将我的输出从数字改为真/假。

有什么建议吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

result1<- lapply(unique(as.numeric(unlist(result))), function(f) x[x$b==f & x$a!=n,"a"])

修好了!

答案 1 :(得分:0)

我会分两部分来解决这个问题。首先,过滤除了您感兴趣的“a”和“b”的值之外的所有内容

tmp_data <- data[(data$b %in% result) & data$a !x,]

然后,从中创建列表输出:

list_of_bs <- lapply(split(tmp_data, data$a), function(df) df$b)