我有一个很大data.frame
的前三列包含有关标记的信息。其余列是每个个体中该标记的数字类型。每个人都有三列。数据集如下所示:
marker alleleA alleleB X818 X818.1 X818.2 X345 X345.1 X345.2 X346 X346.1 X346.2
1 kgp5209280_chr3_21902067 T A 0.0000 1.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000
2 chr3_21902130_21902131_A_T A T 0.8626 0.1356 0.0018 0.7676 0.2170 0.0154 0.8626 0.1356 0.0018
3 chr3_21902134_21902135_T_C T C 0.6982 0.2854 0.0164 0.5617 0.3749 0.0634 0.6982 0.2854 0.0164
也就是说,对于每个标记(行),每个人都有三个值,每列一个。
我想创建一个新的data.frame
,它具有与原始行相同的所有行,但每个人只有一列。在每个人的一列中,我希望每个人的三列中的值大于 0.8。如果没有值大于 0.8,那么我想打印 NA。例如,在我为第一行给出的数据集中,我希望第二个值是 818 (1.0000),第一个值是 345 (1.0000)。在第二行中,我想要 818 (0.8626) 的第一个值,对于 345,没有一个值高于 0.8,所以我想要打印 NA 等等。因此,新数据集将如下所示:
marker alleleA alleleB X818 X345
1 kgp5209280_chr3_21902067 T A 1.0000 1
2 chr3_21902130_21902131_A_T A T 0.8626 NA
我一直在尝试使用if/else
语句,if [, 4] > 0.8 then [, 4], else...
但是它似乎并没有给我想要的东西,而且我还必须循环这个命令,所以它不只是为前三列中的一个人做但对于所有列。
任何帮助,将不胜感激!提前致谢。