当数据行在行尾包含一个额外的分隔符时,如何在R中读取制表符分隔的文件?

当数据行在行尾包含一个额外的分隔符时,如何在R中读取制表符分隔的文件?,r,R,我试图读取一个文件,但它有一个恼人的问题。标题有5列,但数据有6列,这是因为数据行的行尾有一个额外的制表符。它混淆了R,因此它将项目代码作为行名称,并且所有数据都不会移动一个位置 > items <- read.csv("http://download.bls.gov/pub/time.series/cu/cu.item", sep = "\t") > items[1,] item_code item_name display_level sele

我试图读取一个文件,但它有一个恼人的问题。标题有5列,但数据有6列,这是因为数据行的行尾有一个额外的制表符。它混淆了R,因此它将项目代码作为行名称,并且所有数据都不会移动一个位置

> items <- read.csv("http://download.bls.gov/pub/time.series/cu/cu.item", sep = "\t")
> items[1,]
               item_code item_name display_level selectable sort_sequence
AA0 All items - old base         0          TRUE          2            NA
> row.names(items[1,])
[1] "AA0"
>项目项目[1,]
项目\代码项目\名称显示\级别可选排序\顺序
AA0所有项目-旧基础0真实2不适用
>行名称(项目[1,])
[1] “AA0”
你知道怎么解决这个问题吗?如果我指定row.names=NULL,它会将项目代码读入“row.names”列,但所有内容仍会移位

> items <- read.csv("http://download.bls.gov/pub/time.series/cu/cu.item", sep = "\t", row.names = NULL)
> items[1,]
  row.names            item_code item_name display_level selectable sort_sequence
1       AA0 All items - old base         0          TRUE          2            NA
>项目项目[1,]
row.names项目\代码项目\名称显示\级别可选排序\顺序
1 AA0所有项目-旧基础0真实2不适用

正如我在评论中提到的,您可以尝试在没有第一行的情况下读取文件,然后在以后添加标题

比如:

read.table("http://download.bls.gov/pub/time.series/cu/cu.item", 
           header = FALSE, skip = 1, 
           col.names = c(
             scan("http://download.bls.gov/pub/time.series/cu/cu.item", 
                  what = "", n = 5), "XXXXX"), 
           sep = "\t")[-6]
[-6]
将删除
NA
值列

以下是我从上面得到的信息:

head(
  read.table("http://download.bls.gov/pub/time.series/cu/cu.item", 
             header = FALSE, skip = 1, 
             col.names = c(
               scan("http://download.bls.gov/pub/time.series/cu/cu.item", 
                    what = "", n = 5), "XXXXX"), 
             sep = "\t")[-6])
# Read 5 items
#   item_code                                          item_name display_level
# 1       AA0                               All items - old base             0
# 2      AA0R Purchasing power of the consumer dollar - old base             0
# 3       SA0                                          All items             0
# 4      SA0E                                             Energy             1
# 5     SA0L1                                All items less food             1
# 6    SA0L12                    All items less food and shelter             1
#   selectable sort_sequence
# 1       TRUE             2
# 2       TRUE           399
# 3       TRUE             1
# 4       TRUE           374
# 5       TRUE           358
# 6       TRUE           361

跳过标题,以后再添加?指定要读取的列数?如果知道列数,可以指定
colClasses
res1我希望看到一个使用httr内容功能的答案,这与另一个bls站点的问题完全相同-该站点有什么关系?向上投票