最初の 3 つの列にマーカーdata.frame
に関する情報が含まれる大きなデータがあります。残りの列は、各個人のマーカーの数値型です。各個人には 3 つの列があります。データセットは次のようになります。
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
つまり、各マーカー (行) について、各個人は各列に 1 つずつ、合計 3 つの値を持ちます。
元の行と同じ行をすべて持つ新しいものを作成したいのですがdata.frame
、個々の列は 1 つだけです。各個人の 1 つの列で、各個人の 3 つのうち 0.8 より大きい値が必要です。0.8 より大きい値がない場合は、NA を出力します。たとえば、最初の行に指定したデータ セットでは、2 番目の値を 818 (1.0000) に、最初の値を 345 (1.0000) にするとします。2 行目では、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...
が、それは私が望むものを与えてくれないようです。また、このコマンドをループする必要があるため、最初の 3 列の 1 人の個人に対してだけではありません。ただし、すべての列に対して。
どんな助けでも大歓迎です!前もって感謝します。