データを左に移動せずに複数のcsvファイルをマージする

データを左に移動せずに複数のcsvファイルをマージする

複数の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つずつ開き、あるファイルから別のファイルにコピーして貼り付けます。

これを自動化するには、包括的なプログラミングを実行する必要があります。

関連情報