【发布时间】:2013-03-08 18:44:54
【问题描述】:
我有一个很大的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... 一样,但它似乎没有给我想要的东西,我还必须循环这个命令,所以它不只是做它适用于前三列中的一个人,但适用于所有列。
任何帮助将不胜感激!提前致谢。
【问题讨论】:
-
谢谢 - 我应该在其中添加。每个人的所有三列加起来为 1,因此每个人的多列中不会出现高于 0.8 的值。
标签: r loops if-statement dataframe