我有以下两个数据帧
d1 <- data.frame(chr = c("chr1","chr2","chr2"), pos = c(11, 15,21), type = c("type1","type2","type1"))
> d1
chr pos type
1 chr1 11 type1
2 chr2 15 type2
3 chr2 21 type1
d2 <- data.frame(chr = c("chr1","chr2","chr4"), start = c(10, 15,30), stop = c(13,20,40))
> d2
chr start stop
1 chr1 10 13
2 chr2 15 20
3 chr4 30 40
我想在两个条件下将d1子集化:
在这种情况下,结果d3将仅包含d1的第1行:
> d3
chr pos type
1 chr1 11 type1
我会这样开始:
d3 <- subset(d1, d1$type == "type1" & ...)
答案 0 :(得分:1)
我们可以将所有条件加到一个逻辑条件子集中
d1[d1$type=="type1" & d1$chr %in% d2$chr & d1$pos >= d2$start & d1$pos <= d2$stop, ]
# chr pos type
#1 chr1 11 type1