Извлечение даты из имени файла и превращение его в переменную - PullRequest
1 голос
/ 07 апреля 2020

У меня есть список файлов с именами, такими как «MERRA2_300.tavg1_2d_flx_Nx.20050101.SUB.n c», и мне нужно объединить все эти файлы, используя al oop, и создать переменную в этом новом объединенном набор данных, который описывает каждое наблюдение с датой, соответствующей его файлу происхождения. Все файлы имеют одно и то же имя, за исключением самой даты (ie. Следующий файл - MERRA2_300.tavg1_2d_flx_Nx.20050102.SUB.n c)

Я написал al oop следующим образом

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 будет восприниматься как данные временного ряда, но это не является абсолютно необходимым. Я думаю, что даже если переменная просто создана как строка, я могу go оттуда самостоятельно получить данные временных рядов.

1 Ответ

0 голосов
/ 07 апреля 2020

В качестве ответа на мой собственный вопрос, команда gsub хорошо создает новую переменную из части имени файла.

wi1 <- "MERRA2_300.tavg1_2d_flx_Nx.20050101.SUB.nc"
nc1 <- open.nc(wi1)
dat1 <- read.nc(nc1)
dat1$date <- gsub("MERRA2_300.tavg1_2d_flx_Nx.|.SUB.nc", "", "MERRA2_300.tavg1_2d_flx_Nx.20050101.SUB.nc")

создает переменную даты со значением 20050101

В настоящее время пытаюсь проработать это в l oop ... возможно:

for (i in wi) {
  nc<-open.nc(i)
  dat<-read.nc(nc) 

  dat$date <- gsub("MERRA2_300.tavg1_2d_flx_Nx.|.SUB.nc", "", i)

  final_data <- rbind(final_data, dat)
}
...