CTD


Primeiramente, todos os arquivos devem ser salvos em uma pasta.

pasta_ctd=('./csv')

Dois pacotes devem ser carregados. Se der erro tem que instalar os pacotes.

library(readr)
library(lattice)

Armazenando os caminhos dos arquivos na variável arquivos_csv

arquivos_csv=list.files(pasta_ctd,pattern = '*.Csv',full.names = T)

Criando dataframes vazios.

arquivos_txt=c()
dadosF=c()

Lendo cada arquivo Csv e escrevendo uma tabela com a datahora.

for (i in 1:length(arquivos_csv)) {
   ArqCabeca=read_lines(arquivos_csv[i],skip=0,n_max=16)
   datahora=substr(ArqCabeca[15],11,29) #Tira da linha 15 o valor
   ArqDados=read_lines(arquivos_csv[i], skip=43)
   arquivos_txt[i]=gsub('Csv','txt',arquivos_csv[i])
   write_lines(ArqDados,arquivos_txt[i])
   dados=read.csv(arquivos_txt[i], header = T)
   dados$datahora=datahora
   dados$tempo=as.POSIXct(dados$datahora,format = "%Y/%m/%d %H:%M:%S")
   if (i==1) {
      dadosF = dados
   } else {
      dadosF = rbind(dadosF,dados)
   }  
}

Quem faz a mágica é o pacote Lattice. Há como melhorar a interpolação usando o próprio pacote.

levelplot(dadosF$Sal..... ~ as.numeric(format(dadosF$tempo,"%H"))*-dadosF$Depth..m., 
          data = dadosF,
          xlab = "X Coordinate (feet)", ylab = "Y Coordinate (feet)",
          main = "Surface elevation data",
          col.regions = colorRampPalette(c("blue","red"))(30))

Plotando gráficos de perfil de cada campanha.

dados=subset(dadosF,
     as.numeric(format(dadosF$tempo,'%H'))==10)

par(mfrow=c(1,5))
plot(dados$Sal.....,-dados$Depth..m.,ty='l',
     xlab='Salinity (psu)',
     ylab='Depth (m)')
plot(dados$Temp...deg.C.,-dados$Depth..m.,ty='l',
     xlab='Temperature (oC)',
     ylab='')
plot(dados$Chl.a..ug.l.,-dados$Depth..m.,ty='l',
     xlab='Chlorophyl (ug/L)',
     ylab='')
plot(dados$Turb.M..FTU.,-dados$Depth..m.,ty='l',
     xlab='Turbidity (FTU)',
     ylab='')
plot(dados$DO....,-dados$Depth..m.,ty='l',
     xlab='Oxygen (%)',
     ylab='')