我想将由字符串组成的数据集拆分为由 start 和 end 指定的列。
我的数据集看起来像这样:
>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
在已加载的数据集上使用?