1

我有两个 data.frames (cytobandwindows)。因此,我想为 data.frame 中的maploc列的每个值从windowsdata.frame 中找到对应cytobandcytoband值(见下文)。

head(windows)
             chrom  maploc      X4_TU_9 CNV
chr1_1        chr1  291587  0.055690883   0
chr1_2        chr1  640937  0.039105630   0
chr1_3x       chr1  792810 -0.009465735   0
chr1_14xxxxx  chr1  924029 -0.033792175   0
chr1_25xxx    chr1 1035540 -0.010869910   0
chr1_42xxxx   chr1 1184607 -0.020095050   0

head(cytoband)
  chrom chromStart chromEnd Cytoband      G
1  chr1          0  2300000   p36.33   gneg
2  chr1    2300000  5400000   p36.32 gpos25
3  chr1    5400000  7200000   p36.31   gneg
4  chr1    7200000  9200000   p36.23 gpos25
5  chr1    9200000 12700000   p36.22   gneg
6  chr1   12700000 16200000   p36.21 gpos50

chromStart - chromEnd理想情况下,R 应该为每个值找到对应的染色体和核苷酸间隔 ( )maploc并为其分配匹配cytoband信息。

非常感谢您的帮助!!!

大卫

4

1 回答 1

0

您提供的数据似乎不适合证明您的问题(即使数据是正确的)-“chromStart”中的第一行-您的细胞带中的“chromEnd”范围data.frame满足所有“maploc”值你的窗户data.frame

也就是说,这是一个包含一些虚构数据的最小示例,您应该能够将其扩展到您的实际数据。

补一些数据

set.seed(1)
windows <- data.frame(
  chrom = "chr1",
  maploc = sort(floor(runif(10, 500, 5000))),
  X4_TU_9 = rnorm(10)
)
cytoband <- data.frame(
  chrom = "chr1",
  chromStart = seq(0, 6000, 1000),
  chromEnd = seq(1000, 7000, 1000),
  Cytoband = paste("p36", sample(20:40, 7), sep = ".")
)

head(windows, 3)
#   chrom maploc    X4_TU_9
# 1  chr1    778 -0.8204684
# 2  chr1   1407  0.4874291
# 3  chr1   1694  0.7383247
head(cytoband, 3)
#   chrom chromStart chromEnd Cytoband
# 1  chr1          0     1000   p36.30
# 2  chr1       1000     2000   p36.31
# 3  chr1       2000     3000   p36.29

用于findInterval将“maploc”值与“细胞带”中定义的间隔匹配data.frame

WhichRange <- findInterval(windows$maploc, c(0, cytoband$chromEnd))
WhichRange
#  [1] 1 2 2 3 4 4 4 5 5 5

使用该信息将“Cytoband”值从“cytoband”匹配并复制到“windows”

windows$Cytoband <- cytoband$Cytoband[WhichRange]
#    chrom maploc    X4_TU_9 Cytoband
# 1   chr1    778 -0.8204684   p36.30
# 2   chr1   1407  0.4874291   p36.31
# 3   chr1   1694  0.7383247   p36.31
# 4   chr1   2174  0.5757814   p36.29
# 5   chr1   3077 -0.3053884   p36.23
# 6   chr1   3331  1.5117812   p36.23
# 7   chr1   3473  0.3898432   p36.23
# 8   chr1   4542 -0.6212406   p36.34
# 9   chr1   4586 -2.2146999   p36.34
# 10  chr1   4751  1.1249309   p36.34
于 2013-03-23T17:11:16.703 回答