2015-10-17 16 views
0

我需要在下圖中使用以下選項打開CSV文件。我將鏈接添加到我的文件。你可以用如何讀取具有多個嵌入數據集和非打印字符的格式不正確的CSV文件

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

enter image description here

我試圖函數read.table與和read.csv許多選項的文件「20140313_Helix2_FP140_SC45.csv」嘗試,但我需要一個數據幀與多個列和數據是分開的。

+0

我認爲你需要分多個步驟分割你的過程。您的數據目前採用的格式很難一次讀入(因爲數據和標識符位於同一位置)。所以你需要手動編輯你的文件,或者找到一種方法來以原始文本的形式讀取它,然後解析這些行。 – Heroka

+0

@Heroka你是對的。但至少我想分開不同列中的數據。我該怎麼做? –

+1

取決於您的最終/編輯數據的形式。看看原始文本,它絕對不是.csv。 – Heroka

回答

1

它看起來像捕獲的打印機輸出。但它不是凌亂:

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

我假設你想要的「頻點」的數據(這是最常見的),所以我們找到那些的第一個:

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

的其餘的文件是「常規的」足夠的只需查找以數字開頭的行(即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 

的行#匹配(從我可以告訴)的頻點記錄#。

+0

謝謝@hrbrmstr究竟是我在找什麼 –

相關問題