问题描述
我正在尝试将这个格式难看的数据集加载到我的 R 会话中:http://www.cpc.ncep.noaa.gov/data/indices/wksst8110.for
I'm trying to load this ugly-formatted data-set into my R session:http://www.cpc.ncep.noaa.gov/data/indices/wksst8110.for
Weekly SST data starts week centered on 3Jan1990
Nino1+2 Nino3 Nino34 Nino4
Week SST SSTA SST SSTA SST SSTA SST SSTA
03JAN1990 23.4-0.4 25.1-0.3 26.6 0.0 28.6 0.3
10JAN1990 23.4-0.8 25.2-0.3 26.6 0.1 28.6 0.3
17JAN1990 24.2-0.3 25.3-0.3 26.5-0.1 28.6 0.3
到目前为止,我可以用
x = readLines(path)
但是文件混合了空白"和-"作为分隔符,而且我不是正则表达式专家.我很感激任何帮助将它变成一个漂亮而干净的 R 数据框.谢谢!
But the file mixes 'white space' with '-' as separators, and i'm not a regex expert.I Appreciate any help on turning this into a nice and clean R data-frame.thanks!
推荐答案
这是一个固定宽度的文件.使用read.fwf()
读取:
This is a fixed width file. Use read.fwf()
to read it:
x <- read.fwf(
file=url("http://www.cpc.ncep.noaa.gov/data/indices/wksst8110.for"),
skip=4,
widths=c(12, 7, 4, 9, 4, 9, 4, 9, 4))
head(x)
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 03JAN1990 23.4 -0.4 25.1 -0.3 26.6 0.0 28.6 0.3
2 10JAN1990 23.4 -0.8 25.2 -0.3 26.6 0.1 28.6 0.3
3 17JAN1990 24.2 -0.3 25.3 -0.3 26.5 -0.1 28.6 0.3
4 24JAN1990 24.4 -0.5 25.5 -0.4 26.5 -0.1 28.4 0.2
5 31JAN1990 25.1 -0.2 25.8 -0.2 26.7 0.1 28.4 0.2
6 07FEB1990 25.8 0.2 26.1 -0.1 26.8 0.1 28.4 0.3
更新
readr
包(2015 年 4 月发布)提供了一种简单快速的替代方案.
The package readr
(released April, 2015) provides a simple and fast alternative.
library(readr)
x <- read_fwf(
file="http://www.cpc.ncep.noaa.gov/data/indices/wksst8110.for",
skip=4,
fwf_widths(c(12, 7, 4, 9, 4, 9, 4, 9, 4)))
速度比较:readr::read_fwf()
比 utils::read.fwf()
快约 2 倍.
Speed comparison: readr::read_fwf()
was ~2x faster than utils::read.fwf ()
.
这篇关于读取固定宽度的文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!