2016-11-17 148 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

相关问题