基于第二个df(R)的两个属性对数据帧进行子集设置

基于第二个df(R)的两个属性对数据帧进行子集设置,r,subset,topology,R,Subset,Topology,我有两个数据帧(elementdf和nodedf),如果数据帧匹配和nodedf的z字段大于等于90,我想将第二个(elementdf)子集 v1 <- c(1, 2, 3, 4, 5, 6, 8, 9) v2 <- c(90, 90, 90, 40, 20, 20, 80, 80) nodedf <- data.frame(v1, v2) names(nodedf) <- c("nid", "z") v3 <- c(1, 2) v4 <- c(1, 5

我有两个数据帧(
elementdf
nodedf
),如果数据帧匹配和
nodedf
的z字段大于等于90,我想将第二个(
elementdf
)子集

v1 <- c(1, 2, 3, 4, 5, 6, 8, 9)
v2 <- c(90, 90, 90, 40, 20, 20, 80, 80)
nodedf <- data.frame(v1, v2)
names(nodedf)  <- c("nid", "z") 

v3 <- c(1, 2)
v4 <- c(1, 5)
v5 <- c(2, 6)
v6 <- c(3, 7)
v7 <- c(4, 9)

elementdf <- data.frame(v3, v4, v5, v6, v7)
names(elementdf)  <- c("eid", "n1", "n2", "n3", "n4") 

拥有宽格式的数据会使这变得更加困难。在这里,我们使用
tidyr
进行一些重塑,使连接成为可能

library(dplyr)
library(tidyr)
elementdf %>% 
  gather(source, nid, -eid) %>% 
  inner_join(nodedf %>% filter(z>=90)) %>% 
  semi_join(elementdf, .)

那么这里想要的输出是什么呢?添加到编辑中!
library(dplyr)
library(tidyr)
elementdf %>% 
  gather(source, nid, -eid) %>% 
  inner_join(nodedf %>% filter(z>=90)) %>% 
  semi_join(elementdf, .)