我有固定宽度的数据文件(.dbf),没有行分隔符.以下是该数据文件的两行:
20141101 77h 3.210 0 3 20141102 76h 3.090 0 3
Run Code Online (Sandbox Code Playgroud)
一行的宽度c(8,4,7,41)用于日期(8),一些时间度量(4),数据点(7)以及我可以在一个"休息"列(41)中汇总的一些其他列.在一行之后没有分隔符,下一行只是附加到第一行.所有时间步骤基本上都是连续写入一条大线.此文件中只包含数字,字符和空格.
与read.fwf('filepath', widths = c(8,4,7,41))第一行之后的R停止读取,由于缺乏在线分离器的.
read.fwf()当没有行分隔符时,是否有一个参数告诉您何时开始读取新行?或者我应该使用不同的读命令?
提前致谢.
一个不同的,可能不太优雅的解决方案,使用readLines, substr, trimws, separate( tidyr ) 和mutate_all( dplyr ):
txt <- readLines('filepath')
dfx <- data.frame(V1 = sapply(seq(from=1, to=nchar(txt), by=60),
function(x) substr(txt, x, x+59)))
library(dplyr)
library(tidyr)
dfx %>%
separate(V1, c(paste0("V",LETTERS[1:5])), c(8,12,19,55)) %>%
mutate_all(trimws)
Run Code Online (Sandbox Code Playgroud)
这使:
VA VB VC VD VE
1 20141101 77h 3.210 0 3
2 20141102 76h 3.090 0 3
Run Code Online (Sandbox Code Playgroud)
要获得不同的列名称,只需替换c(paste0("V",LETTERS[1:5])为您想要的列名称向量即可。
如果您想将列转换为正确的类而不是转换为character,您可以使用funs(ul = type.convert(trimws(.)))inside mutate_all。
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |