基于第二个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, .)