当数据行在行尾包含一个额外的分隔符时,如何在R中读取制表符分隔的文件?
我试图读取一个文件,但它有一个恼人的问题。标题有5列,但数据有6列,这是因为数据行的行尾有一个额外的制表符。它混淆了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
> 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站点的问题完全相同-该站点有什么关系?向上投票