如何读取包含多个嵌入数据集和非打印字符的格式错误的 CSV 文件
How to read a badly formatted CSV file with multiple embedded data sets and non-printing characters
我需要使用下图中的以下选项打开一个 CSV 文件。我将 link 添加到我的文件中。您可以尝试使用文件“20140313_Helix2_FP140_SC45.csv”
https://www.dropbox.com/sh/i5y8r8g7wymalw8/AABXsLkbpowxGObFpGHgv4m-a?dl=0
我尝试了 read.table 和 read.csv 的许多选项,但我需要一个包含多个列的数据框,并且数据是分开的。
看起来像是捕获的打印机输出。但这并不太凌乱:
# read it in as raw lines
lines <- readLines("20140313_Helix2_FP140_SC45.csv")
我假设你想要 "frequency point" 数据(这是最普遍的)所以我们找到其中的第一个:
start <- which(grepl("^FREQUENCY POINTS:", lines))[1]
文件的其余部分"regular"足以查找以数字开头的行(即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
行数匹配(据我所知)频率点记录数。
我需要使用下图中的以下选项打开一个 CSV 文件。我将 link 添加到我的文件中。您可以尝试使用文件“20140313_Helix2_FP140_SC45.csv”
https://www.dropbox.com/sh/i5y8r8g7wymalw8/AABXsLkbpowxGObFpGHgv4m-a?dl=0
我尝试了 read.table 和 read.csv 的许多选项,但我需要一个包含多个列的数据框,并且数据是分开的。
看起来像是捕获的打印机输出。但这并不太凌乱:
# read it in as raw lines
lines <- readLines("20140313_Helix2_FP140_SC45.csv")
我假设你想要 "frequency point" 数据(这是最普遍的)所以我们找到其中的第一个:
start <- which(grepl("^FREQUENCY POINTS:", lines))[1]
文件的其余部分"regular"足以查找以数字开头的行(即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
行数匹配(据我所知)频率点记录数。