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

问题描述 投票:0回答:1

我已将网页的内容复制到.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是第一人的全名)。列间分隔符在每行中是不同的。

有没有人知道如何在正确指定列的数据框中读取此文本?

谢谢!

r delimiter
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.