首页 > 解决方案 > R-从 PurpleAir 传感器读取 csv 文件并跳过某些行末尾包含非标准字符的错误位置

问题描述

我有许多 PurpleAir 传感器,它们每天将一个 .csv 文件保存到 SD 卡中,并将日期用作文件名。我正在尝试从每个每日 .csv 文件中提取和组合数据。

由于某种原因,某些行的最后一个单元格中的数据后跟 3 个非标准字符,并以这种方式出现在 .csv 文件中:0.46 字符的屏幕截图,因为它们没有显示为文本

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 相同的这些字符时结束)

非常感谢任何支持!

标签: rcsv

解决方案


Sys.setlocale("LC_ALL", "C")在读取 csv 文件之前尝试此命令。我有一个类似的文件,它通过更改语言环境来工作。如果它不起作用,您可以尝试更改为其他语言环境。


推荐阅读