2016-11-17 143 views
0

我有一個簡單tsv文件結構如下:dplyr:如何在跳過某些行的同時讀取帶有標頭的tsv文件?

0 - headerline 
1 - empty line 
2 - PIG schema 
3 - empty line 
4 - 1-st line of DATA 
5 - 2-nd line of DATA 

我想讀它,可能使用readr::read_tsv但這裏的問題。

如您所見,第一行包含標題。然後,我有三行,我做想要讀取它(它們包含來自Apache PIG一些超級怪異的數據),並在第4行的數據開始。在Pandas,我會做類似

df = pd.read_csv('/localpath/data.tsv', sep='\t', skiprows=[1,2,3]) 

,讓我讀頭跳過一排,二,三。

我在readr::read_tsv中看不到類似的選項。那就是:

df = read_tsv('/localpath/data.tsv', col_names = TRUE, skip = 4)

不解析頭...

任何想法?

+1

也許在第一行讀取一個單獨的對象,然後讀取其餘行? – bouncyball

+0

你會如何編碼?有沒有其他的替代品與其他包?我想盡可能減少玩數據 –

+1

使用普通的'read.table'? – rawr

回答

3

發表我的評論作爲答案。基本上,我們的第一行是我們的頭在閱讀,然後在剩餘行的數據讀取:

library(readr) 
names_t <- read_tsv('/localpath/data.tsv', col_names = FALSE, n_max = 1) 
df1 <- read_tsv('/localpath/data.tsv', col_names = FALSE, skip = 4) 
names(df1) <- names_t 

注意,在我的評論我指定nrows = 1的名字讀(這將工作read.csv) ,但看起來這個參數被n_max代替爲readr::read_tsv

相關問題