r - 当数据连续时将一些行合并为一行

标签 r dplyr bioinformatics

我有一个bed file它作为数据帧加载到 R 中。基因组坐标如下所示:

chrom   start  end
chrX    400    600
chrX    800    1000
chrX    1000   1200
chrX    1200   1400
chrX    1600   1800
chrX    2000   2200
chrX    2200   2400

没有必要保留所有行,最好将其压缩为这样的内容:

chrom   start  end
chrX    400    600
chrX    800    1400
chrX    1600   1800
chrX    2000   2400

我怎样才能做到这一点?

我尝试用dplyr想出一些东西,但没有成功。 group_by 不起作用,因为我不知道如何使用第一行的起始坐标和最后一行的结束坐标将连续行的 block 修改为一个,也因为有很多这样的 block 。

最佳答案

使用GenomicRanges来自bioconductor的软件包,专门为床文件等构建:

library(GenomicRanges)

# Example data
gr <- GRanges(
  seqnames = Rle("chr1", 6),
  ranges = IRanges(start = c(400 ,800, 1200, 1400, 1800, 2000),
                   end = c(600, 1000, 1400, 1600, 2000, 2200)))
gr
# GRanges object with 6 ranges and 0 metadata columns:
#       seqnames       ranges strand
#          <Rle>    <IRanges>  <Rle>
#   [1]     chr1 [ 400,  600]      *
#   [2]     chr1 [ 800, 1000]      *
#   [3]     chr1 [1200, 1400]      *
#   [4]     chr1 [1400, 1600]      *
#   [5]     chr1 [1800, 2000]      *
#   [6]     chr1 [2000, 2200]      *
#   -------
#   seqinfo: 1 sequence from an unspecified genome; no seqlengths

# merge contiouse ranges into one using reduce:
reduce(gr)
# GRanges object with 4 ranges and 0 metadata columns:
#       seqnames       ranges strand
#          <Rle>    <IRanges>  <Rle>
#   [1]     chr1 [ 400,  600]      *
#   [2]     chr1 [ 800, 1000]      *
#   [3]     chr1 [1200, 1600]      *
#   [4]     chr1 [1800, 2200]      *
#   -------
#   seqinfo: 1 sequence from an unspecified genome; no seqlength

# EDIT: if the bed file is a data.frame we can convert it to ranges object:
gr <- GRanges(seqnames(Rle(df$chrom),
                       ranges = IRanges(start = df$start,
                                        end = df$end)))

关于r - 当数据连续时将一些行合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40997263/

相关文章:

r - 如何在 Apache Arrow 中使用泛型?

r - 计算机滴定与微阵列数据集中观察到的表达之间的相关性

r - Tukey 对 ggplot boxplot 的事后分析

r - 将数据分成 tidyr 中另一列给出的列

r - tidyr::complete 带有可变长度的列名向量

regex - 使用perl在多个蛋白质序列中查找回文(完美回文)

linux - 将一列分隔文本拆分为多列

r - 无法更改 R 图中的 pch(点符号)。相关性

R:类型为 ="h"的 plot() 函数错误表示小数字(对于 "lwd"的较大值)

r - 频率表和 r 中的多个变量分组