如何从导入的CSV中删除格式不正确的行

时间:2018-02-21 03:37:00

标签: r

我有一个数据文件(CSV),其中某些行被错误地分开了。例如,我有一个" Date"标题,其中唯一的字符串应该是一周中的几天,但有时会在此标题下的数据文件的其他部分中添加字符串。如果删除它们,我不需要担心弄乱数据,因此我想删除这些行,只要该列中的数据不是一周中的某一天。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我会用一个简单的脚本来解决这个问题。我将使用JS和NodeJS运行时来演示这一点,尽管您可以使用任何语言的方法。

我假设您可以在R中编写这样的脚本,但您可以使用任何您喜欢的语言来生成已清理的CSV。我只是想证明这个概念。

此脚本将解析CSV的每一行,并通过拆分CSV分隔符来确定日期字段是否包含一周中的有效日期。如果是,它会将该行附加到新的csv。

假设data.csv中的csv数据集看起来像这样:

汽车;星期一; \ n 球;蝙蝠; \ n 放置;星期三;

要解析此节点的节点脚本如下:

const fs = require('fs')
const file = fs.readFileSync('./data.csv', 'utf8')
const cleanedFile = './cleaned.csv'
file.split('\n').forEach(row => {
  const daysOfWeek = ['Monday', 'Tuesday', 'Wednesday', 'etc...']
  const fields = row.split(';')
  const day = fields[1]
  if (daysOfWeek.includes(day)) {
    fs.appendFile(cleanedFile, `${row}\n`, (err) => {
      if (err) throw new Error('There was a problem appending to the file')
    })
  }
})

这将生成一个名为cleaning.csv的新csv,它看起来像:

汽车;星期一; \ n 放置;星期三;