如何根据caracter位置分配列?

时间:2018-05-09 09:26:09

标签: r datatables

我的数据文件没有任何列分类,而row1如下所示:

AB365960091120112011311260000005311300000001ES020000040036ES1400N

我知道1到8个数据中的字符表示ID,9到15表示出生年份,16到28表示死亡年份等。如何根据字符位置单独创建表格?指示ID =从1到8的字符的方式是什么,例如在R语言中?

我希望我的桌子看起来像这样:

ID           birth date             death date

AB36596      9112011               201131126

2 个答案:

答案 0 :(得分:1)

您可以使用read_fwf包中的readr

library(readr)
library(dplyr)

df <- read_fwf(file = "test.txt", fwf_widths(c(9, 7, 9))) %>%
  `colnames<-`(c("id", "birth date", "death date"))
df

输出为:

  id        `birth date` `death date`
1 AB3659600      9112011    201131126

示例数据:

test.txt

AB365960091120112011311260000005311300000001ES020000040036ES1400N

答案 1 :(得分:0)

这是一个基于你的例子的解决方案:

输入数据:

x<-"AB365960091120112011311260000005311300000001ES020000040036ES1400N"

拆分每个变量中的字符串并将其添加到data.frame

df<-data.frame(ID=substr(x,1,7),
 birth_date=substr(x,10,16),
 death_date=substr(x,17,25))

您想要的输出

df
       ID birth_date death_date
1 AB36596    9112011  201131126

使用相同的方法和substr功能,您将能够提取所有信息。