在一个区间

时间:2015-05-25 11:35:25

标签: r distance intervals

我希望在数字区间内获得比例通讯员到pos的新列df

df <- "SNP CHR BP P
       pr1  1  1  1
       pr2  1  10 1 
       pr3  1  11 1
       pr6  2  1  1
       pr7  2  2  1
       pr8  2  3  1
       pr8  2  9  1"
df <- read.table(text=df, header=T)

df我试图让通讯员到BP栏。 BP列从1CHR 1)到9CHR 2)。考虑BPdf的总时间间隔为1,我们得到:从20from。我之前知道要比较的限制,即-20 to 20 20。因此,我们将dfBP 40中的时间间隔)与dfout(要比较的时间间隔)进行比较。然而,从一行到另一行,我们有不同的距离&#34;。

这是我期望的输出dfout <- "SNP CHR BP P pos pr1 1 1 1 -20 pr2 1 10 1 0 pr3 1 11 1 2 pr6 2 1 1 4 pr7 2 2 1 6 pr8 2 3 1 8 pr8 2 9 1 20" dfout <- read.table(text=dfout, header=T)

CHR

您可以将我的数据理解为一个曼哈顿情节。每条染色体(SNPs)都有特定的CHR来绘制。每个x-axis将按顺序绘制。然后在y-axis中,我们将获得一个唯一的时间间隔(P将是x-axis,但无需访问此问题)。我以前知道这个from -20 to 20间隔(x-axis)。然后,我想根据CHRBP分配df$pos <- seq(from = -20, to = 20, length.out = nrow(df)) 的比例数。

我正在寻找一些技巧:

seq

我在SNP中使用的问题是每个&#34; pr1&#34;将被分配一个对应的号码,忽略探测之间的信号间隔(例如:pr2pr6之间的距离与pr7((((df[2,3] - df[1,3]))+1)*2)-(((df[2,3]-df[1,3])+1)*2)相比完全不同。

此代码dfout[2,5]足以达到pos中的预期值。我们乘以2是因为BP的间隔比BP中的值大两倍(20中的总间隔== pos40中的总间隔= = <ul>)。

有什么想法吗?

0 个答案:

没有答案