将 3 个 .csv 合并为一个具有不同列数的文件

将 3 个 .csv 合并为一个具有不同列数的文件

我有 3 个 .csv 文件,我想将它们合并为一个 .csv 文件,该文件可以是 R 或 Matlab。
这些文件是:

1597 obs of 167 variables;
160 obs of 167 variables;
533 obs of 146 variables 

我尝试在 MatLab 中通过添加额外的 NaN 列来垂直连接它们,但是我无法让列对齐到正确的位置。我尝试了 R 中的合并函数,但总是回到列数问题,没有成功。

我将不胜感激任何帮助!

在此处输入图片描述

答案1

使用 Miller (https://github.com/johnkerl/miller),例如,如果你有这 3 个 CSV 文件

cat input01.csv
a,b
1,2

cat input02.csv
a,c
7,3

cat input03.csv
a,b,c
9,12,1

并且你跑步mlr --csv unsparsify input0*csv >output.csv,你将拥有

+---+----+---+
| a | b  | c |
+---+----+---+
| 1 | 2  | - |
| 7 | -  | 3 |
| 9 | 12 | 1 |
+---+----+---+

在示例中使用这两个输入文件:

并运行

mlr --csv unsparsify input_0*.csv >output.csv

你将得到这个输出 CSV

+------------------+-----------------+---------------+
| Plastic: Cleaner | Plastic: Drinks | Plastic: Caps |
+------------------+-----------------+---------------+
| -                | 7               | -             |
| 4                | 5               | -             |
| 5                | 3               | -             |
| 2                | -               | 8             |
+------------------+-----------------+---------------+

然后安装 Miller 并进行一些测试。

相关内容