【发布时间】:2020-07-19 19:28:07
【问题描述】:
我有一个名称为“MERRA2_300.tavg1_2d_flx_Nx.20050101.SUB.nc”的文件列表,我需要使用循环组合所有这些文件,并在新的组合数据集中创建一个变量来描述每个观察日期与其原始文件相对应。所有文件都具有完全相同的名称,除了日期本身(即下一个文件是 MERRA2_300.tavg1_2d_flx_Nx.20050102.SUB.nc)
我写了一个循环如下
wi <- list.files(path = ".")
final_data <- data.frame(matrix(ncol = 7, nrow = 0))
colnames(final_data) <- c("PRECTOTCORR", "TLML", "lat", "lon", "time", "time_bnds", "date")
for (i in wi) {
nc<-open.nc(i)
dat<-read.nc(nc)
date <- i
dat$date <- date
final_data <- rbind(final_data, dat)
}
date <- i 这一行是这个问题的症结所在。我知道使用gsub 或stringr 或regx 有某种方法可以为每个观察创建一个日期变量,但我对操作和语法感到困惑。
理想情况下,答案会创建变量,使其被 R 理解为时间序列数据,但这不是绝对必要的。即使变量只是作为字符串创建的,我认为我可以自己从那里转到时间序列数据。
【问题讨论】:
-
你可以在这里依靠什么?日期是否总是在文件名中的相同位置?它们是否始终采用相同的格式(8 个数字:年、月、日)?等等。
-
是的,除了日期之外,文件名都完全相同。应该澄清一下,我会将其添加到原始问题中
-
是的,它们的格式总是 YYYYMMDD