如何读取格式错误的CSV文件,其中包含多个嵌入数据集和非打印字符

时间:2015-10-17 11:37:10

标签: r csv read.table read.csv

我需要使用下图中的以下选项打开CSV文件。我将链接添加到我的文件中。您可以尝试使用“20140313_Helix2_FP140_SC45.csv”文件

https://www.dropbox.com/sh/i5y8r8g7wymalw8/AABXsLkbpowxGObFpGHgv4m-a?dl=0

enter image description here

我已尝试过read.table和read.csv的许多选项,但我需要一个包含多个列的数据框,并且数据是分开的。

1 个答案:

答案 0 :(得分:1)

它看起来像捕获的打印机输出。但它不是凌乱:

# read it in as raw lines
lines <- readLines("20140313_Helix2_FP140_SC45.csv")

我假设你想要&#34;频率点&#34;数据(它是最普遍的)所以我们找到第一个:

start <- which(grepl("^FREQUENCY POINTS:", lines))[1]

文件的其余部分是&#34;常规&#34; 足够只是查找以数字开头的行(即PNT列)并读取它,为其提供比read.table默认值更精确的列名称:

dat <- read.table(textConnection(grep("^[0-9]+",lines[start:length(lines)], value=TRUE)),
                  col.names=c("PNT", "FREQ", "MAGNITUDE"))

而且,结果如下:

head(dat)
##   PNT     FREQ MAGNITUDE
## 1   1 0.800000   -19.033
## 2   2 0.800125   -19.038
## 3   3 0.800250   -19.071
## 4   4 0.800375   -19.092
## 5   5 0.800500   -19.137
## 6   6 0.800625   -19.167

nrow(dat)
## [1] 1601 

行数匹配(据我所知)频率点记录数。