R-从 PurpleAir 传感器读取 csv 文件并跳过某些行末尾包含非标准字符的错误位置
Posted
技术标签:
【中文标题】R-从 PurpleAir 传感器读取 csv 文件并跳过某些行末尾包含非标准字符的错误位置【英文标题】:R-Read in csv files from PurpleAir sensors and skip error location where non standard characters are contained at the end of some rows 【发布时间】:2020-11-25 06:02:38 【问题描述】:我有许多 PurpleAir 传感器,它们每天将一个 .csv 文件保存到 SD 卡中,并将日期用作文件名。我正在尝试从这些每日 .csv 文件中提取和组合数据。
由于某种原因,某些行的最后一个单元格中的数据后跟 3 个非标准字符,并在 .csv 文件中以这种方式出现:0.46 Screenshot of characters because they are not showing up as text
read.csv("filepath") - 正确读取标题行和所有行,直到这些非标准字符第一次出现,然后不加载剩余数据。如果错误出现在前几行,则函数会给出以下错误:
Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on '20200825.csv'
手动打开文件并删除这些额外字符允许 R 正确读取到出现这些字符的下一行(这些字符出现在看似随机的行中,但总是在行尾/在最后一个单元格中)。
我不需要最后一列的数据,所以有没有办法告诉函数忽略最后一列而只读取第一列?
我已经尝试了多个线程的一些建议,但目前无法解决问题。手动打开文件并删除字符不是一个选项,因为我有很多文件。
(注意,尝试使用 readLines 作为文本读入并修复字符只会导致函数在遇到与 read.csv 相同的这些字符时结束)
非常感谢任何支持!
【问题讨论】:
有一个colClasses参数。 我尝试使用 colClasses 忽略设置为“NULL”的最后一列。但是,由于这些字符似乎会影响行尾,因此该函数仍会在该行的末尾停止。所以跳过列可能不是解决方案。 【参考方案1】:在读取您的 csv 文件之前,请尝试使用此命令 Sys.setlocale("LC_ALL", "C")
。我有一个类似的文件,它通过更改语言环境来工作。如果它不起作用,您可以尝试更改为其他语言环境。
【讨论】:
感谢您的建议。我尝试了上面的命令,但不幸的是没有成功。以上是关于R-从 PurpleAir 传感器读取 csv 文件并跳过某些行末尾包含非标准字符的错误位置的主要内容,如果未能解决你的问题,请参考以下文章