我有两个数据框,X
and Y
.
X <- data.frame(V1 = c("chr1", "chr1", "chr1", "chr2", "chr2", "ch2"),
Start = c(0, 540, 920, 0, 582, 715 ),
Stop = c(230, 720, 1270, 350, 635, 950))
Y <- data.frame(V1 = c("chr1", "chr1", "chr1", "chr2", "chr2", "ch2"),
Start = c(3, 16, 180,
15, 585, 800 ),
Stop = c(15, 24, 201,
102, 612, 850))
我想获取一个data.frameZ
这是一个新的 data.frame,其信息为X
和计数Y
每个“X”行的范围之间。例如,您可以计算 3 行“Y”,它们位于 chr1 中第一行“X”的范围之间,因此该行的“Z”中有 3。
Z <- data.frame(V1 = c("chr1", "chr1", "chr2", "chr2", "chr2", "ch2"),
Start = c(0, 540, 920, 0, 582, 715 ),
Stop = c(230, 720, 1270, 350, 635, 950),
Count = c(3, 0, 0, 1, 1, 1))
我希望得到一些帮助,因为直到今天,如果“X”数据集只有一行,我只能打印行数,但我不知道如何实现我的目标。我想我必须使用一些条件语句加上 for 循环来迭代“X”的行,但我不知道该怎么做。
我尝试过的:
-
尝试计算与“Y”中只有一行匹配条件的行数:
nrow(Y[Y$Start >= X$Start & Y$Stop <= X$Stop, ])
当“X”中只有 1 行时有效,但当我尝试在 for 循环中实现它时无效。