par Dirk Baker | Mis à jour le : 10/03/2017 | Commentaires : 8
Vous connaissez peut-être R pour le traitement et l'analyse des données. Mais savez-vous comment importer facilement des données qui sont au format TOA5 de Campbell Scientific dans R ? Dans cet article, je vais brièvement vous décrire R et TOA5, puis partager une fonction pour créer un Dataframe R de votre TOA5.
R est un puissant logiciel libre pour le calculs statistiques et les graphiques. Il est également populaire pour sa capacité à produire des documents de qualité destinés aux publications avec les symboles mathématiques et les formules nécessaires à l'aide de plates-formes UNIX, Windows et MacOS.
Recommandé pour vous : Pour en apprendre plus sur R ou télécharger R, visitez le site Web The R Project for Statistical Computing. |
Le format de fichier TOA5 est le format par défaut utilisé pour les données collectées à partir de n'importe quelle centrale de mesure récente de Campbell Scientific. Ce format est un simple fichier texte délimité par des virgules qui possède une extension .dat.
Le format de fichier TOA5 comprend un en-tête ASCII à quatre lignes avec des informations sur la centrale de mesure que vous utilisez pour collecter vos données. En outre, l'en-tête décrit les valeurs de données avec les noms des variables et les unités de mesure, si elles sont disponibles.
Les quatre lignes de l'en-tête sont les suivantes :
Recommandé pour vous : Pour de plus information au sujet de TOA5, voir l'Appendix B du manuel de LoggerNet. |
Vous trouverez le code complet de la fonction d'importation à la fin de cette section. Il suffit de copier le code dans un fichier ou la ligne de commande R. Un appel à cette fonction R a un paramètre requis - le nom du fichier, ainsi qu'un paramètre facultatif - l'option de retour (RetOpt) :
importCSdata(“filename.dat”, “RetOpt”)
Si vous voulez simplement les données avec un en-tête simple, tout ce que vous avez besoin est une ligne de code comme ceci :
myData ‹- importCSdata(“CR1000_HourlyWeather.dat”)
Le paramètre RetOpt facultatif est par défaut "data", comme dans la ligne ci-dessous :
myData ‹- importCSdata(“CR1000_HourlyWeather.dat”, “data”)
Lorsque le paramètre RetOpt (Return Option) est omis ou est "data", une trame de données R est créée avec la deuxième ligne du fichier de données brutes utilisé pour les noms. Le TIMESTAMP est converti en ce que R reconnaît comme date et horodatage afin que ces informations puissent être utilisées dans la représentation graphique, l'analyse de séries temporelles ou l'agrégation de données en fonction de la date ou de l'heure.
Parce qu'il y a beaucoup de bonnes informations dans l'en-tête du fichier TOA5, vous pouvez aussi simplement importer l'en-tête comme documentation pour votre traitement en utilisant la syntaxe ci-dessous:
myData.Info ‹- importCSdata(“CR1000_HourlyWeather.dat”, “info”)
Le code complet de la fonction d'importation :
importCSdata ‹- function(filename,RetOpt="data"){ if(RetOpt=="info"){ # bring in entire header of CSI TOA5 data file for metadata stn.info ‹- scan(file=filename,nlines=4,what=character(),sep="\r") return(station.info) } else { # second line of header contains variable names header ‹- scan(file=filename,skip=1,nlines=1,what=character(),sep=",") # bring in data stn.data ‹- read.table(file=filename,skip=4,header=FALSE, na.strings=c("NAN"),sep=",") names(stn.data) ‹- header # add column of R-formatted date/timestamps stn.data$TIMESTAMP ‹- as.POSIXlt(strptime(station.data$TIMESTAMP,"%Y-%m-%d %H:%M:%S")) return(stn.data)} }
Vous pouvez télécharger ce programme.
Il y a beaucoup trop d'informations disponibles au sujet de R pour les énumérer, mais voici quelques-unes pour commencer ou pour en savoir plus :
J'espère que vous trouverez cette fonction utile pour vos traitements de données et vos analyses. N'hésitez pas à poster vos commentaires sur votre expérience, ou vos suggestions, ci-dessous.
Bonne analyse !
Credits: Le logo R est © 2016 par la fondation R. Le logo a été utilisé sans modification et avec la permission conformément aux termes du Creative Commons Attribution-ShareAlike 4.0 International license (CC-BY-SA 4.0).
Commentaires
J. Magnin | 02/15/2017 at 03:20 AM
Hello,
This article is quite useful, although your code has some mistakes: you use 2 variables names for the same object (stn.data / station.data & stn.info / station.info), so the function stops & returns an error.
By the way, the way you use scan & read.table gave me an idea for enhanced functions to read TOA5 data (and why not, later, other data formats ?). I would like to publish that work, as soon as it will be done, on the CRAN (maybe under GPL V3) to make it available for the R users community. For this, I would like to have your authorization for using your code as a basis, if you agree with that idea.
Thanks,
J.M.
Dirk | 02/15/2017 at 10:33 AM
Thank you for pointing that out, JM! Looks like I introduced that typo in condensing the code to fit the page. It's fixed now and a downloadable version added.
I like the idea of expanding and enhancing the function and, as far as I'm concerned, anyone is free to use and modify my code as needed. I'm interested to learn more about your ideas and possibly collaborating. You're welcome to contact me at dbaker@campbellsci.com.
Thanks!
Dirk
ariklee | 02/23/2018 at 12:57 PM
Awesome! Great to see R represented in a Campbell blog. I've written a short R script also to read TOA5 data, it's pretty handy to separate out the 4-line header from the data.
A quick search on Github shows a few repositories related to reading and plotting TOA5 Campbell data: https://github.com/search?l=R&q=campbell&type=Repositories&utf8=%E2%9C%93
Thanks for your contribution!
Eric
Bissett | 11/01/2022 at 08:26 PM
Hi Dirk,
I am trying to use this to combine station files with backup files, etc. The problem I am having is that the header prints out each line in quotes, and removes the quotes from around each character string and I am worried that will cause a problem when loggernet tries to write new data to the file.
Before import the header looks like:
"TOA5","CR300_1","CR300","5514","CR300-RF407.Std.10.06","CPU:CR300_1.CR300","41351","Hourly_met"
"TIMESTAMP","RECORD","Rain_mm_Tot","AirTC_Avg","RH","WS_ms_S_WVT","WindDir_D1_WVT","SlrW_Avg","ETos","Rso"
"TS","RN","mm","Deg C","%","meters/second","Deg","W/m^2","mm","MJ/m²"
"","","Tot","Avg","Smp","WVc","WVc","Avg","ETXs","Rso"
Exported version:
TOA5,CR300_1,CR300,5514,CR300-RF407.Std.10.06,CPU:CR300_1.CR300,41351,Hourly_met TIMESTAMP,RECORD,Rain_mm_Tot,AirTC_Avg,RH,WS_ms_S_WVT,WindDir_D1_WVT,SlrW_Avg,ETos,Rso TS,RN,mm,Deg C,%,meters/second,Deg,W/m^2,mm,MJ/m² ,,Tot,Avg,Smp,WVc,WVc,Avg,ETXs,Rso
If you could let me know if there is a solution, I would greatly appreciate it.
Thanks! Bissett
Dirk | 11/01/2022 at 10:02 PM
Hi Bissett,
The intent of this code is to import the data for the next steps of analysis and visualization, not to combine files into a format that LoggerNet would recognize. This is possible, but would take some additional work, as you've noted.
I'll send you and email shortly so we can talk more about possible solutions for what you want to do.
Best,
Dirk
Joseph Knudsen | 06/27/2023 at 06:46 PM
Hi Dirk,
What package includes the importCSdata() function? -Thanks!
Dirk | 06/28/2023 at 06:04 PM
Hi Joseph,
The function is included as a downloadable text file, so it can simply be run as part of a script or at the command prompt. It is not part of a package.
Best,
Dirk
data science | 05/25/2024 at 03:31 PM
how can i download data straight from online into r
Please log in or register to comment.