【发布时间】:2018-07-03 10:52:57
【问题描述】:
我想将由字符串组成的数据集拆分为由 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?
【问题讨论】: