r - 如何将制表符分隔的数据(不同格式)解析为 data.table/data.frame?

标签 r parsing data.table csv

我正在尝试解析制表符分隔的数据,该数据已保存为带有无关数据的文本文件。我希望这是一个 R data.table/data.frame。

制表符分隔的格式如下:

A   1092    -   1093    +   1X
B   1093    HRDCPMRFYT
A   1093    +   1094    -   1X
B   1094    BSZSDFJRVF
A   1094    +   1095    +   1X
B   1095    SSTFCLEPVV
...

只有两种类型的行,A 和 B。A 始终有 5 列,例如对于第一行,
1092    -   1093    +   1X

B 始终有两列:
1093    HRDCPMRFYT

问题:如何解析具有不同格式的“交替”行的文件?

假设这是一个只有这种格式的文本文件,A 行和 B 行交替,分别有 5 列和 2 列。您如何将其解析为 R data.table?我的想法是如何创建以下格式:
1092    -    1093    +    1X    1093    HRDCPMRFYT
1093    +    1094    -    1X    1094    BSZSDFJRVF
1094    +    1095    +    1X    1095    SSTFCLEPVV
... 

最佳答案

您可以使用 fread 运行 shell 命令.在 Win10 中,你甚至可以运行一些 linux 实用程序,例如 sed
因此,你可以简单地做

fread("sed '$!N;s/\\n/ /' test.tab")
#      V1 V2   V3 V4      V5         V6
# 1: 1092  - 1093  + 1X 1093 HRDCPMRFYT
# 2: 1093  + 1094  - 1X 1094 BSZSDFJRVF
# 3: 1094  + 1095  + 1X 1095 SSTFCLEPVV

(sed 语法取自 here )

数据
text <- "1092    -   1093    +   1X
1093    HRDCPMRFYT
1093    +   1094    -   1X
1094    BSZSDFJRVF
1094    +   1095    +   1X
1095    SSTFCLEPVV"

# Saving it as tab separated file on disk
write(gsub(" +", "\t", text), file = "test.tab")

关于r - 如何将制表符分隔的数据(不同格式)解析为 data.table/data.frame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50315948/

相关文章:

r - 如何在While循环中有两个条件?

Python - 解析、分割文本并将其分成单独的行

R中的行式矩阵运算

r - 更有效地将匹配列与data.table中的重复项合并

r - 将 Forecast.gts(hts 包)与外部回归器和并行处理结合使用

r - 用ggplot中的函数定义的两条线之间的阴影区域

c# - 解析十六进制内容的文本文件

r - 使用 data.table 按组计算值的百分比/比例

r - R中的二维插值,没有任何外插

python - 有解析美国地址的库吗?