複数のcsvファイルを1つの大きなファイルにマージしようとしています。これらのファイルはすべて列の長さが異なり、残りのファイルにはヘッダーのみがあります(データなし)。最終的なcsvを使用すると、
paste -d "," file1.csv file2.csv file3.csv file4.csv file5.csv file6.csv > output.csv
次のようになります。
cgi_si2のデータはcgi_siiにあり、cgi_siiのデータは別の列になければなりません。 file1.csvの範囲はsubjectkeyからcgi_siまでで、file2.csvは単なるcgi_si2ですが、ヘッダー(cat file2.csv cgi_si2
)のみ、file3.csvにはcgi_siiとデータ番号(1列のみ)があり、file4.csvには他のすべてのヘッダーがありますが、データはなく、file5 .csvがあります。ヘッダーとデータ (列 1 つ) であるのに対し、 file6.csv はヘッダーが多くデータはありません ( cat file6.csv cgi_efficacy_se,trt_grp,days_baseline,etc....
)。
| sed 's/^,//; s/,$//'> output.csv
成功せず配管してみました。どんなアドバイスも本当にありがとうございます。ありがとうございます!
答え1
ここに例があります。このタイプの入力ファイルがあります。タイトルが異なり、内容のないファイルもあります。
cat input_01.csv
subjectjey,cgi_si
a,2
b,3
cat input_02.csv
cgi_si2,cgi_sii
4,10
9,18
cat input_03.csv
cgi_si2
cat input_04.csv
cgi_sii
8
9
見事に使うミラーそして走っている
mlr --csv rename -r '"cgi_si[0-9]+",cgi_si' then rename '"cgi_sii.+",cgi_sii' then unsparsify input_0*.csv
あなたはやる
+------------+--------+---------+
| subjectjey | cgi_si | cgi_sii |
+------------+--------+---------+
| a | 2 | |
| b | 3 | |
| | 4 | 10 |
| | 9 | 18 |
| | | 8 |
| | | 9 |
+------------+--------+---------+
名前の変更と正規表現を使用していくつかのフィールドの名前を変更し、すべてのフィールドをマージしました。
答え2
タスクを完了する最も簡単な方法は手動で完了することです。 Excel / Calcを開き、Excel(またはテキストエディタ)で各.csvを1つずつ開き、あるファイルから別のファイルにコピーして貼り付けます。
これを自動化するには、包括的なプログラミングを実行する必要があります。