私はこれを持っていますdataframe
(約 446664 X 234 の薄暗い) と呼ばれるmydf
(dput
が提供されています)。これdataframe
には列REF
とがありますALT
。
REF
すべての行に 1 文字しかありませんがALT
、コンマ (",") で区切られた 1 つ、2 つ、または 3 つの文字を含めることができます。残りの列 (サンプル列) は、すべての作業を行う必要がある列です。
の任意の文字をREF
0、最初の文字をALT
1、2 番目の文字を 2、3 番目の文字をそれぞれ 3 と考えると、次のような関数を作成する必要があります。
すべてのサンプル列 (つまり、REF と ALT を除く) の数字を文字に置き換えることができます。
それらに NA/NA を入力し、「/」を折りたたんで、すべてのセルでペアの文字を取得します。
最後に、 に示すように、すべてのサンプル列を行全体で反転する必要があります (
transpose
)result
。ありがとうございました!mydf<- structure(list(REF = structure(c(1L, 4L, 3L, 2L, 3L), .Label = c("A", "C", "G", "T"), class = "factor"), ALT = structure(c(6L, 6L, 1L, 9L, 1L), .Label = c("A", "A,C", "A,G", "A,T", "C", "C,G", "C,T", "G", "G,T", "T"), class = "factor"), X860 = structure(c(1L, 3L, 2L, 1L, 1L), .Label = c("./.", "0/0", "0/1", "0/2", "1/1" ), class = "factor"), X861 = structure(c(1L, 6L, 2L, 1L, 1L), .Label = c("./.", "0/0", "0/1", "0/2", "1/1", "1/2"), class = "factor"), X862 = structure(c(6L, 3L, 1L, 2L, 1L), .Label = c("./.", "0/0", "0/1", "0/2", "1/1", "2/2"), class = "factor")), .Names = c("REF", "ALT", "X860", "X861", "X862"), row.names = c(NA, -5L), class = "data.frame")
期待される出力:
X860 NANA TC GG NANA NANA
X861 NANA CG GG NANA NANA
X862 GG TC NANA CC NANA