如何为 Weka 标准化这个非标准 CSV 文件?

如何为 Weka 标准化这个非标准 CSV 文件?

我将数据插入服务中csvlint.io22 Problem encountered on line 2因为我在 Weka 中尝试按以下方式导入 CSV 文件时遇到错误。

`java -jar weka.jar` > Explorer > 
    Preprocess > Open file > [select file format CSV] 
    > [Choose CSV file]

类似的错误消息在线程中Weka 中未识别为 csv 文件我之前通过将数据插入 LibreOffice、在那里自动修复并保存为 CSV 来解决这个问题,但我想在那里找到一个命令行解决方案。我在中收到以下警告csvlint.io尽管我已经生成了从那里的服务数据在 Debian 9 中。

结构问题:第 1 行出现非标准换行符

您的 CSV 似乎使用 LF 换行符。虽然这在大多数情况下没问题,但 RFC 4180 指定 CSV 文件应使用 CR-LF(回车符和换行符对,例如 \r\n)。在某些系统上,这可能被标记为“Windows 行结尾”。

数据

Ni, Aika, Aika_l, Un, Unen, Unen_kesto, Uniluokat_R, Uniluokat_k, Uniluokat_s, HRV_RMSSD_a, HRV_RMSSD_i, Kokonaisp, Palautumisen_k, Hermoston_t, Syke_ave_m, Syke_a, Syke_l, Hengitystiheys_ave_m, Hengitystiheys_a, Hengitystiheys_min_a, Liikeaktiivisuus_l, Liikeaktiivisuus_a, Paivamaara_l
"Masi", 23072010-2200+0300, 24072010-0600+0300, 70, 7h40, 6h30, 1h40, 3h40, 1h10, 67.0, 43.0, 24.0, 430, 30, 70, 50, 40, 20, 10, 10, 150, 260, 24.10.2010
"Masi", 23072010-2200+0300, 24072010-0600+0300, 70, 7h40, 6h30, 1h40, 3h40, 1h10, 67.0, 43.0, 24.0, 430, 30, 70, 50, 40, 20, 10, 10, 150, 260, 24.10.2010

要删除那里的水平空白,您可以tr -d "[:blank:]"对数据运行,但这不是必需的。我认为行结尾在这里不是问题,因为用dos2unixunix2dos(meuh) 修复文件并不能解决问题。

操作系统:Debian 9

答案1

Cas在评论中的回答

awk -F', ' -v OFS=, '{gsub(" ",",",$3)}; NR==1 {$1=$1;print}; NR > 1 {split($22,a,"."); $22 = a[3]"-"a[2]"-"a[1]; print }' data.csv

相关内容