【发布时间】:2016-06-18 21:52:35
【问题描述】:
我从互联网下载数据。我想提取数据并创建一个数据框。您可以在以下过滤后的数据集链接中找到数据: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 尝试过,文件的模式对我来说并不熟悉,但它不起作用。您能否调整上述代码或任何其他代码以获取数据框。
提前谢谢你。
【问题讨论】:
-
您的方法看起来不错,但我不明白什么不起作用。仅仅是日期的格式不完全是 asPOSIXct 所期望的。试试
lubridate::dmy() -
@Richard Telford。谢谢你的提示。我尝试使用 POSITXlt 和 lubridate,但它似乎对我不起作用。你能从网站上查一下吗?这让我很难受。
-
至少在我打开的文件中,“Launch Date”和“:”之间有不止一个空格。
grep无法识别搜索字符串,sub也不会。您可以使用正则表达式来处理任意数量的空格。代码非常简洁——并不总是一件好事!
标签: r dataframe ftp data-extraction