我希望将由字符组成的数据集按照指定的起始和结束位置拆分成多列。
我的数据集大致如下所示:
>head(templines,3)
[1] "201801 1 78"
[2] "201801 2 67"
[3] "201801 1 13"
我希望通过使用数据字典来指定列拆分它:
>dictionary
col_name col_start col_end
year 1 4
week 5 6
gender 8 8
age 11 12
因此,它变成:
year week gender age
2018 01 1 78
2018 01 2 67
2018 01 1 13
实际上这些数据来自于长期运行的调查,某些列之间的空格代表不再收集的变量。由于它有很多变量,所以我需要一个可以扩展的解决方案。
在
tidyr::separate
中,似乎只能通过指定分割位置来进行分割,而不能使用起始和结束位置。是否有一种方法可以使用起始/结束位置?我考虑使用
read_fwf
来实现此操作,但似乎无法对已加载的数据集使用它。我只能通过首先将其导出为txt文件,然后从该.txt文件中读取来使其工作:write_lines(templines,"t1.txt")
read_fwf("t1.txt",
fwf_positions(start = dictionary$col_start,
end = dictionary$col_end,
col_names = dictionary$col_name)
在已加载的数据集上使用read_fwf
是否可行?