小编mfk*_*534的帖子

R中的列之间的平均值,不包括NA

我无法想象我是第一个有这个问题的人,但我还没有找到解决方案(这里或其他地方).

我有几列,我想在R中平均.唯一最简单的方面是一些列包含NA.

例如:

Trait Col1 Col2 Col3
DF    23   NA   23
DG    2    2    2
DH    NA   9    9
Run Code Online (Sandbox Code Playgroud)

我想创建一个Col4,它平均前3列中的条目,忽略了NA.所以:

 Trait Col1 Col2 Col3 Col4
 DF    23   NA   23   23
 DG    2    2    2    2
 DH    NA   9    9    9 
Run Code Online (Sandbox Code Playgroud)

理想情况下这样的事情会起作用:

data$Col4 <- mean(data$Chr1, data$Chr2, data$Chr3, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.

average r

18
推荐指数
2
解决办法
5万
查看次数

R中的范围合并 - 应用循环

我在这里发布了一个问题:R中的匹配范围合并关于根据落入第二个文件中的范围的一个文件中的数字合并两个文件.到目前为止,我没有成功拼凑代码来实现这一目标.我遇到的问题是我正在使用的代码逐行比较文件.这是一个问题,因为1.)一个文件比另一个文件长得多,并且2.)我需要较短文件中的行扫描较长文件中的每个范围对 - 而不仅仅是同一行中的范围.

我一直在使用原始问题中发布的函数,我觉得应该有一种方法将它应用到一个更通用的循环,将第一个文件中的每一行与第二个文件中的每一行进行比较,但我没有'我想通了.如果有人有任何建议,我将不胜感激.

****已编辑.

数据的性质是这样的:每个范围不一定是唯一的,尽管大多数是.它们的大小也不相同,有些完全属于其他类型.findInterval因此产生错误,因为范围不能排序以便以"非降序"顺序排列.

以下是每个数据框的前6行:

file1test <- data.frame(SNP=c("rs2343", "rs211", "rs754", "rs854", "rs343", "rs626"), BP=c(860269, 369640, 861822, 367934, 706940, 717244))


file2 <- data.frame(Gene=c("E613", "E92", "E49", "E3543", "E11", "E233"), BP_start=c(367640, 621059, 721320, 860260, 861322, 879584), BP_end = c(368634, 622053, 722513, 879955, 879533, 894689))
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,第5行的范围位于第4行的范围内,第一行的两个SNP落在第4行的范围内,但只有一个属于第二行的范围.

第一个包含SNP的文件只有大约400行.但是,包含范围的第二个文件大约有20K.我想要作为输出产生的是一个数据框,其中包含来自第一个文件(SNP)的行,其中BP属于第二个文件中的BP范围.如果SNP落入两个范围,那么它将出现两次,等等.

merge loops r genetics

5
推荐指数
2
解决办法
4377
查看次数

基于多列隔离数据区域

我有一个数据集,缩写在这里:

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
Run Code Online (Sandbox Code Playgroud)

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

为此,我首先想要识别log10> 6的SNP,使用子集这很简单.

newdata <- subset(data, log10 > 6)
Run Code Online (Sandbox Code Playgroud)

然而,我还想在这个子集中包括物理上靠近这些先导SNP的SNP,使用BP 500 +/-前导SNP的BP(log10> 6).在这里,我不确定最好的方法.这是我可以解决的问题,subset还是我应该首先在原始数据中识别这些主要SNP,然后从那里进行分组?

一旦我隔离了这些区域,我就能继续前进.

任何建议表示赞赏!

r subset intervals

3
推荐指数
1
解决办法
181
查看次数

根据另一个数据框中的列删除行

有没有一种方法可以根据另一个数据框的列从数据框中删除行?

例如,数据框1:

        Gene CHROM    POS REF ALT N_INFORMATIVE     Test       Beta       SE
AAA     1  15211   T   G          1481  1:15211 -0.0599805 0.112445
LLL     1 762061   T   A          1481 1:762061  0.2144100 0.427085
CCC     1 762109   C   T          1481 1:762109  0.2847510 0.204255
DDD     1 762273   G   A          1481 1:762273  0.0443946 0.119924
Run Code Online (Sandbox Code Playgroud)

数据框2(仅1列):

Genes
AAA
BBB
CCC
DDD
EEE
FFF
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想扫描数据框1的第1列,以查找与数据框2的所有匹配项,并删除匹配的行。

它们需要完全匹配,结果将如下所示:

        Gene CHROM    POS REF ALT N_INFORMATIVE     Test       Beta       SE
LLL     1 762061   T   A          1481 1:762061  0.2144100 0.427085
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这种方法的变体,但是没有用:

NewDataframe <-!(Dataframe1$Gene==Dataframe2$Genes)
Run Code Online (Sandbox Code Playgroud)

谢谢阅读。

r subset dataframe

3
推荐指数
1
解决办法
2553
查看次数

如何使用列中的多个字符对数据进行子集化

这是一个非常简单的问题.

我有一个冗长的数据集,并希望根据特定列中的某些条目创建一个子集.在这种情况下,我这样设置:

示例数据:

> NL

SNP alleles

rs1234 A_T

rs1235 A_G

rs2343 A_T

rs2342 G_C

rs1134 C_G

rs1675 T_A

rs8543 A_T

rs2842 G_A

P <- subset(NL, alleles = "A_T", alleles = "T_A", alleles = "G_C", alleles = "C_G")
Run Code Online (Sandbox Code Playgroud)

这样运行没有错误,但是得到的P不是任何方式的子集(P的尾部仍然显示与原始NL相同的条目数).

我究竟做错了什么?

r subset dataformat

2
推荐指数
1
解决办法
6545
查看次数

按条件合并具有不同列信息的文件

我有三个文件,每个文件中的信息不会以任何方式重叠 - 但是,它们需要以特定的方式相互合并才能有用.

第一个文件在后两个文件中是唯一的,它们以相同的方式设置.文件1看起来像这样:

rs101   12  126890980   A   G   
rs102   4   114553253   A   C   
rs103   9   172776204   C   T
Run Code Online (Sandbox Code Playgroud)

文件2看起来像这样:

1   178 0.12    0.26    0.02    
1   1458    0.35    0.37    0.021   
1   318 0.99    0.105   0.08
Run Code Online (Sandbox Code Playgroud)

文件3看起来像这样:

 1  3567    0.78    0.67    0.005   
 0  0   0   0   0   
 1  3567    0.34    -0.15   0.001 
Run Code Online (Sandbox Code Playgroud)

我想要一个脚本,将这些文件合并到文件中以生成第三个文件:

rs101   12  126890980   A   G
1   178 0.12    0.26    0.02
1   3567    0.78    0.67    0.005
rs102   4   114553253   A   C   
1   1458    0.35    0.37    0.02
0   0   0 …
Run Code Online (Sandbox Code Playgroud)

python unix perl awk sed

2
推荐指数
1
解决办法
150
查看次数

根据字符数删除行

我想知道如何根据两行的总和从数据集中删除包含超过一定数量字符的行.

例如,在以下数据中:

2   rs121065    0   17696224    T   C
2   rs1860485   0   17696230    T   C
2   rs237147    0   17696256    C   CGAGGCAG
2   rs1909633   0   17696365    A   G
2   rs574724    0   17696368    T   C
Run Code Online (Sandbox Code Playgroud)

我想删除第三行.问题是一系列字母是可变的,因此在其他地方,数据可能如下所示:

2   rs113308    0   17683654    CCTTT   C
Run Code Online (Sandbox Code Playgroud)

或这个:

2   rs103371    0   17667279    TG  T
Run Code Online (Sandbox Code Playgroud)

所以 - 基本上,需要删除最后两列中包含2个以上字符的任何行,理想情况下我的数据集将如下所示:

2   rs121065    0   17696224    T   C
2   rs1860485   0   17696230    T   C
2   rs1909633   0   17696365    A   G
2   rs574724    0   17696368    T   C
Run Code Online (Sandbox Code Playgroud)

任何建议都非常感谢!

grep r sed dataset

1
推荐指数
1
解决办法
639
查看次数

使用Merge在R中组合列表数据?

我想结合两个列表:

data1 data2
a 1     a 1
b 2     b 2
c 3     c 3
d 4     f 6
e 5     g 7
Run Code Online (Sandbox Code Playgroud)

所以最终的产品是:

data3
a 1
b 2
c 3
d 4
e 5
f 6
g 7
Run Code Online (Sandbox Code Playgroud)

我尝试过使用merge的变体,但不可避免地会从每个列表中丢失一些东西.

谢谢您的帮助!谢谢!

merge r list

0
推荐指数
1
解决办法
3142
查看次数

标签 统计

r ×7

subset ×3

merge ×2

sed ×2

average ×1

awk ×1

dataformat ×1

dataframe ×1

dataset ×1

genetics ×1

grep ×1

intervals ×1

list ×1

loops ×1

perl ×1

python ×1

unix ×1