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 selectable sort_sequence
AA0 All items - old base         0          TRUE          2            NA
> row.names(items[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

最佳答案

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

就像是:

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

关于r - 当数据行在行尾包含额外的分隔符时,如何在 R 中读取制表符分隔的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30567978/

相关文章:

R LDA 主题建模 : Result topics contains very similar words

r - Plumber R,将 'localhost' 更改为本地计算机 IP 作为测试

r - 在 R 中生成五分位数并重新编码多个变量

r - 使用循环时的 tbl_df 和 data.frame 差异

r - 精子功能不明确

r - ggpubr:在标签中显示显着性水平(*** 或 n.s.)而不是 p 值

r - 如何在向量中找到连续的 TRUE 值并将它们替换为 R 中连续的 TRUE 值的数量?

python - R 和 sklearn 中的随机森林

css - 更改 Shiny 的红色错误消息的颜色

r - 用回归树进行亚组识别