【问题标题】:How do I handle double-tabs in tab delimited txt import in R?如何在 R 中处理制表符分隔的 txt 导入中的双制表符?
【发布时间】:2019-05-13 17:14:06
【问题描述】:

我有一个以制表符分隔的文本文件,但有些行在列之间有两个制表符。当我读入 R 时,一切看起来都很棒,直到我遇到这些行之一然后崩溃了。

我的猜测是,如果一个标签跟随另一个标签,那么第二个标签应该被忽略。

我尝试过使用带有和不带有 sep="\t" 的 read.table 以及 read_table。

data <- read.table("frog.txt",sep="\t", skip = 9, header=TRUE)

我应该从中得到的是:

|Ind |广告 |品牌 |Net |Date |Program |Genre |Metric| |167 |Widg |Beta |UPN |1/1 |Bob |动画 |100 | |168 |Widg |Gamma |TNN |2/2 |汉堡 |Anim | 50 | |169 |齿轮 |牛肉 |TLA |3/3 |干杯 |Com |199 |

但我得到的是

|Ind |广告 |品牌 |Net |Date |Program |Genre |Metric| |167 |Widg |Beta |UPN |1/1 |Bob |动画 |100 | |168 |Widg |Gamma |TNN |2/2 |汉堡动画 50 | |齿轮牛肉 TLA 3/3 Cheers Com 199 |

【问题讨论】:

  • 可以分享一下.txt文件吗?解决方案可能是使用 readLines() 来更正标签,或者如果有两个,则按照您的建议进行不同的操作。 statistical-programming.com/r-readlines-example
  • 可悲的是超级敏感(和巨大的)。我也试过 readLines——忘了那个,因为它真的没有让我走得太远。不过,我会看一下链接。

标签: r read.table


【解决方案1】:

一种快速的解决方案是将所有双标签转换为单标签:

library(data.table)
data <- readLines("frog.txt")
data <- gsub("\t\t", "\t", data)
data <- fread(text=data, sep="\t", skip = 9, header=TRUE)

【讨论】:

    【解决方案2】:

    只要字段中没有空格,我认为您犯了其他错误,因为只需省略 sep 就足够了。例如:

    read.table(text = "1\t\t2\t3")
    ##   V1 V2 V3
    ## 1  1  2  3
    

    【讨论】:

    • 遗憾的是字段中有空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2014-08-31
    • 2021-08-26
    • 2013-06-04
    • 2013-05-29
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多