如何将具有复杂(不规则)列间分隔符的文本读取到R数据框中?

时间:2019-02-22 14:51:08

标签: r delimiter

我已将网页内容复制到.txt文件中,我想将其正确读取到R中。这是9列数据的外观:

  5     11111  A, B                       z   L  2800   +25   11  2000.04.13         
  4      2222  C, D                       z   M  2730   -25   30  2001.05.23         
 66       333  E, F                       z   N  2680   +45   23  2002.12.14         
  7     44444  G, H                       z   O  2665    +5   21  2003.03.18         
111         5  I, J                       z   P  2645    +5   38  2004.02.22 

在每一行中,左侧(第一列开始之前)都有一个空白,其第一列的长度分别为一位数字,两位数字,...。第三列中的字母A,B,C ...是名字和姓氏(具有不同的长度),中间用逗号和“一个”空格(即A,B是第一人称全名)分隔。每行的列间分隔符都不同。

有人知道如何将文本读入指定了正确列的数据框中吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用此代码,首先使用fread读取数据。然后根据需要合并第3列和第4列

library(data.table)
data<-fread("dat.txt",sep=" ")

head(data)
    V1    V2 V3 V4 V5 V6   V7  V8 V9        V10
1:   5 11111 A,  B  z  L 2800  25 11 2000.04.13
2:   4  2222 C,  D  z  M 2730 -25 30 2001.05.23
3:  66   333 E,  F  z  N 2680  45 23 2002.12.14
4:   7 44444 G,  H  z  O 2665   5 21 2003.03.18
5: 111     5 I,  J  z  P 2645   5 38 2004.02.22

library(tidyverse)
data2<-unite_(data, "newcol", c("V3","V4"), sep="")

 head(data2)
    V1    V2 newcol V5 V6   V7  V8 V9        V10
1:   5 11111    A,B  z  L 2800  25 11 2000.04.13
2:   4  2222    C,D  z  M 2730 -25 30 2001.05.23
3:  66   333    E,F  z  N 2680  45 23 2002.12.14
4:   7 44444    G,H  z  O 2665   5 21 2003.03.18
5: 111     5    I,J  z  P 2645   5 38 2004.02.22