gpt4 book ai didi

r - 基于多列隔离数据区域

转载 作者:行者123 更新时间:2023-12-01 23:54:56 25 4
gpt4 key购买 nike

我有一个数据集,此处缩写为:

SNP chr       BP log10   PPA
rs10068 17 56555 1.16303 0.030
rs10032 17 56561 26.364 0.975
rs10354 17 34951 4.3212 0.626
rs10043 17 20491 0.00097 0.006
rs10457 17 69572 -0.38403 0.014
rs10465 17 69872 8.19547 0.927

其中 PPA 是关联的后验概率。由于我有一些较高的 log10 值 (>6),我想确定这些区域周围的可信区间,以准确确定它们的大小。

为此,我首先想识别 log10 > 6 的 SNP,使用子集就足够简单了。

newdata <- subset(data, log10 > 6)

但是,我还想在此子集中包含物理上靠近这些先导 SNP 的 SNP,使用 BP 500 +/- 前导 SNP 的 BP(log10>6)。正是在这里,我不确定继续进行的最佳方法。我可以将其纳入子集,还是应该首先在原始数据中识别这些先导 SNP,然后从中提取子集?

一旦我隔离了这些区域,我就可以继续前进。

如有任何建议,我们将不胜感激!

最佳答案

s <- read.table(header=T, text="SNP chr       BP log10   PPA
rs10068 17 56555 1.16303 0.030
rs10032 17 56561 26.364 0.975
rs10354 17 34951 4.3212 0.626
rs10043 17 20491 0.00097 0.006
rs10457 17 69572 -0.38403 0.014
rs10465 17 69872 8.19547 0.927")

到 s$log10 > 6 的任何行的距离:

outer(s$BP[s$log10 > 6], s$BP, '-')
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 6 0 21610 36070 -13011 -13311
## [2,] 13317 13311 34921 49381 300 0

上面任何绝对值 < 500 的列都是您要保留的列:

s[apply(outer(s$BP[s$log10 > 6], s$BP, '-'), 2, function(x) any(abs(x) < 500)),]
## SNP chr BP log10 PPA
## 1 rs10068 17 56555 1.16303 0.030
## 2 rs10032 17 56561 26.36400 0.975
## 5 rs10457 17 69572 -0.38403 0.014
## 6 rs10465 17 69872 8.19547 0.927

关于r - 基于多列隔离数据区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com