dplyr:如何在跳过某些行的同时使用 headers 读取 tsv 文件?
dplyr : how to read a tsv file with headers while skipping some lines?
我有一个简单的 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
但问题就在这里。
如您所见,第一行包含 headers。然后我做了三行 NOT 想要读取它(它们包含一些来自 Apache PIG 的超级奇怪的数据),数据从第 4 行开始。在 Pandas
中,我会做类似
的事情
df = pd.read_csv('/localpath/data.tsv', sep='\t', skiprows=[1,2,3])
允许我阅读 headers AND 以跳过第一、二、三行。
我在 readr::read_tsv
中没有看到类似的选项。即:
df = read_tsv('/localpath/data.tsv', col_names = TRUE, skip = 4)
不解析 headers...
有什么想法吗?
张贴我的评论作为答案。基本上,我们读入第一行作为我们的header,然后读入剩余的行作为数据:
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
),但在 readr::read_tsv
.
我有一个简单的 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
但问题就在这里。
如您所见,第一行包含 headers。然后我做了三行 NOT 想要读取它(它们包含一些来自 Apache PIG 的超级奇怪的数据),数据从第 4 行开始。在 Pandas
中,我会做类似
df = pd.read_csv('/localpath/data.tsv', sep='\t', skiprows=[1,2,3])
允许我阅读 headers AND 以跳过第一、二、三行。
我在 readr::read_tsv
中没有看到类似的选项。即:
df = read_tsv('/localpath/data.tsv', col_names = TRUE, skip = 4)
不解析 headers...
有什么想法吗?
张贴我的评论作为答案。基本上,我们读入第一行作为我们的header,然后读入剩余的行作为数据:
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
),但在 readr::read_tsv
.