我从互联网上下载了数据。我想提取数据并创建数据框。您可以在以下过滤数据集链接中找到数据:http://www.esrl.noaa.gov/gmd/dv/data/index.php?category=Ozone&type=Balloon。在9个过滤数据集的网站页面底部,您可以选择任何工作站。 Say Suva,斐济(SUV):
我编写了以下代码来创建一个数据框,该数据框的启动日期是每个文件数据框的一部分。
setwd("C:/Users/")
path = "~C:/Users/"
files <- lapply(list.files(pattern = '\\.l100'), readLines)
test.sample<-do.call(rbind, lapply(files, function(lines){
data.frame(datetime = as.POSIXct(sub('^.*Launch Date : ', '', lines[grep('Launch Date :', lines)])),
# and the data, read in as text
read.table(text = lines[(grep('Sonde Total', lines) + 1):length(lines)]))
}))
文件来自FTP服务器。即使我用.txt
尝试过,文件的模式看起来也不熟悉,但它不起作用。你可以调整上面的代码或任何其他代码来获取数据框。
提前谢谢。
答案 0 :(得分:0)
我认为问题在于搜索字符串不匹配&#34;发布日期:&#34;与文件中的内容不匹配(至少是我检查过的文件)。
这应该有效
lines <- "Launch Date : 11 June 1991"
lubridate::dmy(sub('^.*Launch Date.*: ', '', lines[grep('Launch Date', lines)]))
如果将问题分解为步骤而不是一句话
,代码可能会更容易调试答案 1 :(得分:0)
我采取了以下方法:
td <- tempdir()
setwd(td)
ftp <- 'ftp://ftp.cmdl.noaa.gov/ozwv/Ozonesonde/Suva,%20Fiji/100%20Meter%20Average%20Files/'
files <- RCurl::getURL(ftp, dirlistonly = T)
files <- strsplit(files, "\n")
files <- unlist(files)
dat <- list()
for (i in 1:length(files)) {
download.file(paste0(ftp, files[i]), 'data.txt')
df <- read.delim('data.txt', sep = "", skip = 17)
ld <- as.character(read.delim('data.txt')[9, ])
ld <- strsplit(ld, ":")[[1]][2]
df$launch.date <- stringr::str_trim(ld)
dat[[i]] <- df ; rm(df)
}