フィールド1はヌクレオチド配列を含み、フィールド2はテキストを含み、フィールド4は整数を含む以下のCSV入力ファイル形式を有する。
ATGC,CD3,56
ATGC,CD4,67
ATGC,IgD,126
ATGC,IgM,127
AGTC,CD3,67
AGTC,CD4,78
AGTC,IgD,102
AGTC,IgM,89
TCGA,CD3,334
TCGA,CD4,123
TCGA,IgD,456
TCGA,IgM,80
CGTA,CD3,54
CGTA,CD4,32
CGTA,IgD,82
CGTA,IgM,117
MacでNumbersを使用してこのCSVファイルを開き、3つの列形式で表示されます。ただし、表形式(または行列)形式(CSVファイルでもあります)に変換して、タイトルの最初の列(ヌクレオチド配列)を変換したいと思います。そして、結果がテーブル(または行列)のように見えることを望みます。
ATGC AGTC TCGA CGTA
CD3 56 67 334 54
CD4 67 78 123 32
IgD 126 102 456 82
IgM 127 89 80 117
以下は実際の入力CSVファイルの一部ですinput.txt
。
AGAATAGTCTGATTCT,-,,38
AGAATAGTCTGATTCT,AnnexinV,,51
AGAATAGTCTGATTCT,CD127,,39
AGAATAGTCTGATTCT,CD138,,3
AGAATAGTCTGATTCT,CD14,,2
AGAATAGTCTGATTCT,CD16,,4
AGAATAGTCTGATTCT,CD19,,10
AGAATAGTCTGATTCT,CD20,,6
AGAATAGTCTGATTCT,CD24,,21
AGAATAGTCTGATTCT,CD25,,4
AGAATAGTCTGATTCT,CD27,,87
AGAATAGTCTGATTCT,CD3,,235
AGAATAGTCTGATTCT,CD34,,5
AGAATAGTCTGATTCT,CD38,,18
AGAATAGTCTGATTCT,CD4,,412
AGAATAGTCTGATTCT,CD43,,99
AGAATAGTCTGATTCT,CD5,,430
AGAATAGTCTGATTCT,CD56,,3
AGAATAGTCTGATTCT,CD8,,7
AGAATAGTCTGATTCT,IgD,,4
AGAATAGTCTGATTCT,IgM,,2
TGTGGTAGTTCGTCTC,-,,9
TGTGGTAGTTCGTCTC,AnnexinV,,42
TGTGGTAGTTCGTCTC,CD127,,6
TGTGGTAGTTCGTCTC,CD138,,4
TGTGGTAGTTCGTCTC,CD16,,40
TGTGGTAGTTCGTCTC,CD19,,7
TGTGGTAGTTCGTCTC,CD20,,2
TGTGGTAGTTCGTCTC,CD24,,24
TGTGGTAGTTCGTCTC,CD25,,2
Linuxテキスト書式設定コマンドを使用してこれを行うには?
ベストアンサー1
awkを使用してください:
{
ks[$1 $2] = $3; # save the third column using the first and second as index
k1[$1]++; # save the first column
k2[$2]++; # save the second column
}
END { # After processing input
for (j in k1) { # loop over the first column
printf "\t%s", j; # and print column headers
};
print ""; # newline
for (i in k2) { # loop over the second
printf "%s", i; # print it as row header
for (j in k1) { # loop over first again
printf "\t%s", ks[j i]; # and print values
}
print ""; # newline
}
}
出力:
~ awk -F, -f foo.awk foo
AGTC ATGC CGTA TCGA
CD4 78 67 32 123
IgD 102 126 82 456
IgM 89 127 117 80
CD3 67 56 54 334