我有一个大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
Run Code Online (Sandbox Code Playgroud)
也就是说,对于每个标记(行),每个个体具有三个值,每列一个.
我想创建一个新的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
Run Code Online (Sandbox Code Playgroud)
我一直试图使用if/else语句, …