r - 如何将值范围内的匹配分组并检查结果?
问题描述
我有一个基因数据集,我在其中对基因组中物理上靠近的基因变体进行分组。我对每条染色体与基因组中某些点有 500 +/- 距离的基因进行分组。
我为此编写了代码,但是,当我查看输出时,我新形成 group
的列没有从数字 1 开始分组,编号最小的组是 5,我不知道为什么。
我的“点”数据集是变体需要在 500 +/- 范围内的位置,并且看起来像:
connected_spots chrom min max low high
1 1 1000 1200 500 1700
2 1 20000 20100 19500 20600
3 5 900 1000 400 1500
和low
列high
是我希望收集变体的范围。它们是通过 +500 或 -500max
和min
值创建的:
spots[, c("low", "high") := .(min - 500, max + 500)]
然后,我比较我的第二个数据集 df 是否在基因组中的某个位置具有任何变体(行),并且如果变体在同一点的范围内,则将low
它们high
组合成一列:group
df$connected_spots <- seq.int(nrow(df))
#Find matches in df on matching chromosomes and position between low&high:
df <- df[spots, group := i.connected_spots, on = .(chrom, position > low, position < high ) ]
我正在寻找是否有任何基因变体适合斑点范围的 df 看起来像:
Gene chrom position connected_spots
Gene1 1 1200 1
Gene2 1 10000 2
Gene3 5 500 3
我为 df 预先创建了一个connected_spots
列,只是为了给每个变体/行提供一个 ID,以便在搜索位置匹配时使用 - 如果我最终connect_spots
在我的第一个数据集中搜索哪个变体在范围内,这样做真的有问题吗?什么会导致我的真实数据最低group
为 5?
所以我得到的输出(当我将组从最低到最高排序时)是:
Gene chrom position group
Gene4 1 1200 5
Gene8 1 10000 5
Gene9 5 500 6
为什么不group
从第 1 组开始?
有没有另一种方法可以编码这一行:
df <- df[spots, group := i.connected_spots, on = .(chrom, position > low, position < high ) ]
潜在地避免我在使用真实数据时遇到的问题?
输入数据:
#Spots dataset:
structure(list(connected_spots = 1:3, chrom = c(1L, 1L, 5L),
min = c(1000L, 20000L, 900L), max = c(1200L, 20100L, 1000L
), low = c(500L, 19500L, 400L), high = c(1700L, 20600L, 1500L
)), row.names = c(NA, -3L), class = c("data.table", "data.frame"))
#Variants to find in range of spots:
structure(list(Gene = c("Gene1", "Gene2", "Gene3"), chrom = c(1L,
1L, 5L), position = c(1200L, 10000L, 500L), connected_spots = 1:3), row.names = c(NA,
-3L), class = c("data.table", "data.frame"))
解决方案
推荐阅读
- python-3.x - 解构基本的 Tk 脚本
- javascript - 如何使用范围滑块显示这种可变数据
- php - Laravel 表单不更新并说它是另一种形式 laravel 5.8
- terraform - Terraform 从 CIDR 块创建多个 IP
- python - 字节串如何存储好?- 不是 JSON 可序列化的 -
- python - Python:点聚类/平均
- tensorflow - tensorflow 2.0, variable_scope(), TypeError: __call__() got an unexpected keyword argument 'partition_info'
- python - 检索搜索结果 selenium python bs4
- php - 使用 PHP 通过 SOAP 请求输入日期时,“00”附近的语法不正确
- angular - 在 coreUI 中使用 app-sidebar-nav 时如何操作 routerLink?