列1に基づいて一致させる必要がある2つの.csvファイルがあります。
2つのファイル構造は次のとおりです。
ファイル1
gopAga1_00004004-RA,1122.825534, -2.497919969, 0.411529843
gopAga1_00010932-RA,440.485381, 1.769511316, 0.312853434
gopAga1_00007012-RA, 13.37565185, -1.973108929, 0.380227982
etc...
ファイル2
gopAga1_00004004-RA, ENSACAP00000013845
gopAga1_00009937-RA, ENSACAP00000000905
gopAga1_00010932-RA, ENSACAP00000003279
gopAga1_00000875-RA, ENSACAP00000000296
gopAga1_00010837-RA, ENSACAP00000011919
gopAga1_00007012-RA, ENSACAP00000012682
gopAga1_00017831-RA, ENSACAP00000016147
gopAga1_00005588-RA, ENSACAP00000011117
etc..
これは現在Joinを使って実行するコマンドです。
これは私が次のスレッドで読んだ内容の形式です。ここ
join -1 1 -2 1 -t , -a 1 -e "NA" -o "2.2,1.1,1.2,1.3" <(sort -k 1 healthy_vs_unhealthy_de.csv) <(sort RBH.csv) > output.txt
ただし、このプロンプトを実行するたびに、出力の最初の行だけが記録されます。
私のコードがこのように動作し、実際にGOP IDに基づいて2つのファイルをマージしない理由を知っている人はいますか?
答え1
区切り文字をカンマで指定する必要があります。sort
# join -1 1 -2 1 -t , -a 1 -e "NA" -o "2.2,1.1,1.2,1.3" <(sort -t',' -k 1 healthy_vs_unhealthy_de.csv) <(sort -t',' RBH.csv)
ENSACAP00000013845,gopAga1_00004004-RA,1122.825534, -2.497919969
ENSACAP00000012682,gopAga1_00007012-RA, 13.37565185, -1.973108929
ENSACAP00000003279,gopAga1_00010932-RA,440.485381, 1.769511316
答え2
〜のように芝は正確に指摘した、主な問題は、sort
ユーティリティが誤って呼び出されることです。ただし、スペースが挿入され、ソートに問題が発生する可能性があります。
使用に切り替えるcsvkitのツールコマンドラインからCSVファイルを解析して処理するには、それを使用して結合をcsvjoin
実行できます。これは、入力データに空行がないと仮定します。空白行がある場合は、最初に削除されますgrep -vx '[[:blank:]]*'
。
csvjoin --no-header-row --skipinitialspace --columns=1 file1 file2
または短いオプションを使用してください。
csvjoin -HS -c 1 file1 file2
あなたの質問にデータが与えられると、次のものが出力されます。
a,b,c,d,b2
gopAga1_00004004-RA,1122.825534,-2.497919969,0.411529843,ENSACAP00000013845
gopAga1_00010932-RA,440.485381,1.769511316,0.312853434,ENSACAP00000003279
gopAga1_00007012-RA,13.37565185,-1.973108929,0.380227982,ENSACAP00000012682
後で削除できるヘッダーを追加します(おそらく使用tail -n +2
)。
これを並べ替えて3番目の列を削除するには、上記の追加ヘッダーcsvcut
も削除します。tail
csvjoin -HS -c 1 file1 file2 |
csvcut -c 5,1-3 |
tail -n +2
...結果は次のとおりです。
ENSACAP00000013845,gopAga1_00004004-RA,1122.825534,-2.497919969
ENSACAP00000003279,gopAga1_00010932-RA,440.485381,1.769511316
ENSACAP00000012682,gopAga1_00007012-RA,13.37565185,-1.973108929
使用される列は、または同様の組み合わせなどの一時csvcut
ヘッダーを使用して指定できます。-c b2,a,b,c
-c b2,1-3