如何阅读德国气象当局的这个txt文件?

时间:2014-10-29 17:56:37

标签: r data.table read.table

有关如何正确阅读此txt文件的任何想法?
ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/climate/hourly/wind/recent/FF_Stundenwerte_Beschreibung_Stationen.txt

我使用read.fwf,但这不合适。 fread也失败了。 到目前为止,这是我的代码:

width <- c(0, 11, 21, 31, 45, 56, 66, 107, 150) # Looked it up in Excel :)
width <- diff(width)
url <- "ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/climate/hourly/wind/recent/FF_Stundenwerte_Beschreibung_Stationen.txt"
con <- url(url, encoding="Latin1") # I am user Ubuntu

col.names <- c("station_id", "von_datum", "bis_datum",
                 "stationshoehe", "geoBreite", "geoLaenge",
                 "stationsname", "bundesland")

dat <- read.fwf(con, width, skip = 2, na.strings="\032",
                    strip.white = TRUE,
                    stringsAsFactors = FALSE,
                    col.names = col.names)

dat <- dat[-nrow(dat), ] # The last row only has this na.strings="\32"

1 个答案:

答案 0 :(得分:1)

ooops-我看到第7列中有一些空格,所以典型的方法是通过rawfile<-readLines(your_file.txt)读取整个文件,然后执行fixfile<-gsub('[ ]{1,}/)',')',rawfile)以消除不需要的空格,然后分开按空格(strsplit)生成的数据,最后将第1列到第6列从character转换为numeric

如果对于括号前的少数空格不适用,您可以使用read.table或其他base文件输入工具将任何空白集合视为分隔符并转储数据直接进入矩阵为您服务。也许您发现下载文件更容易,通过文本编辑器运行,然后加载到R。它取决于你: - )

编辑:或者,如果您不需要括号中的名称,则gsub('[(].*?[)]','',rawfile)可以完成。