2016-11-08 44 views
0

我想導入一個大約有10,000列的csv文件。我已經嘗試fread以及read.csv,但這兩項功能似乎都無法完成這項工作。大表中很少有非na cols的文件導入

問題是第一列是完全空的,除了左上角的一個隨機數(文件號)。然後在文件名後面的第一行中,在右端後面有列名。我們假設我只有3列包含NAs和整數。其餘9,997列全部爲空(即列名確實存在,但它們不包含任何值,向下)。

我想用NAs填充這些列,但同時保持這3個正確填充的列完好無損。這似乎不可能?讀取數據總是會在第一行之後殺死每一行,儘管我有3列持續到最後一行(比方說第100行)。因此,我期望整個文件被導入,直到第100行。

我在做什麼錯?

不幸的是,我沒有這個問題的示例文件,但我試圖儘可能清楚地描述。

編輯:用於導入由CSV:對的fread

read.csv(csvfile, sep = ";", na.strings=c("NA","..",""," "), stringsAsFactors = F, 
       header = T, as.is = T, dec = ".",fill = TRUE,quote="") 

代碼:

fread(csvfile, sep = ";", na.strings=c("NA","..",""," "), stringsAsFactors = F, 
      header = T) 

我相信問題也可以被描述爲不相等的列長度。

+0

我建議首先使用其他工具清理這個文件,例如Notepad ++如果可以打開,或者像Java一樣。將其轉換爲'read.csv'可以處理的格式。 –

+0

@TimBiegeleisen好的,但這裏的實際問題是什麼?缺少的行名稱?我的意思是,將最大尺寸計算爲最長排時間最長的col會很容易,並且使用NAs填充其餘部分對嗎? 編輯:另外我還有一些格式的文件,如果可能的話,我正在尋找一個自動化的解決方案。 – user3032689

+0

第一行可以有標題,或者第一行可以是數據。這是'read.csv'將帶你。 –

回答

1

我們顯然有一個數據文件,第一行中有一個條目。讓我們用下面的字符串作爲一個例子:

example <- "filename;col_one;col_two;col_three 
1;2;3 
4;5;6 
7;8;9 
5;; 
" 

這是不行的

read.table(text=example, sep=";", header=TRUE) 

但這將讀取頭

scan(text=example, what="character", nlines=1, sep=";") 

,這將讀取數據

read.table(text=example, sep=";", header=FALSE, skip=1) 

你會hav e從標題中刪除文件名並再次合併標題和數據。據我所知,最後一行不易翻譯成fread,這是非常不幸的。

+0

實際上重新測試,它的工作原理。謝謝! – user3032689