데이터를 왼쪽으로 이동하지 않고 여러 csv 파일 병합

데이터를 왼쪽으로 이동하지 않고 여러 csv 파일 병합

여러 csv 파일을 하나의 큰 파일로 병합하려고 합니다. 이러한 파일은 모두 열 길이가 다르며 나머지 파일에는 헤더만 있습니다(데이터 없음). 최종 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와 데이터 번호(단 하나의 열만 있음)가 있으며, 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를 하나씩 열고 한 파일에서 다른 파일로 복사하여 붙여넣습니다.

이를 자동화하려면 포괄적인 프로그래밍을 수행해야 합니다.

관련 정보