Utilisez-vous R ? Voici comment importer les données de Campbell Scientific sur R

par Dirk Baker | Mis à jour le : 10/03/2017 | Commentaires : 7

Les thèmes principaux du Blog


Recherche sur le Blog


Langages du blog

English
Français (French)


Abonnez-vous au Blog

Recevez un courriel lorsqu'un nouvel article est posté. Choisissez les sujets qui vous intéressent le plus.


Entrez votre adresse courriel :



Suggérer un article

Y a-t-il un sujet que vous souhaiteriez nous voir aborder ? Laissez-nous un message.

Leave this field empty

datalogger data to R

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 – Calcul statistique et graphique

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.

Fichier au format TOA5

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 :

  • La première ligne contient des informations sur l'enregistreur de données, telles que le numéro de série et le nom du programme.
  • La deuxième ligne est ce que la plupart des gens verraient comme l'en-tête de données, car il contient les noms des variables stockées dans la table.
  • La troisième ligne se compose des unités pour les variables - si elles ont été définies dans la centrale de mesure.
  • Dans la quatrième ligne, il y a une abréviation pour les traitements effectués par la centrale de mesure (par exemple, échantillonnage, moyenne, écart type, maximum, minimum, etc.).

Recommandé pour vous : Pour de plus information au sujet de TOA5, voir l'Appendix B du manuel de LoggerNet.

Comment importer un fichier TOA5 dans R

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.

Informations supplémentaires

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 :

  • DataCamp : alors qu'ils font beaucoup de choses, voici un lien vers un tutoriel gratuit sur l'importation de données
  • Quick-R : beaucoup d'informations basiques et faciles d'accès
  • Cookbook pour R : version en ligne gratuite par un auteur différent que le livre avec un titre similaire
  • Les bonnes feuilles par les gens de RStudio
  • Cookbooks : Bien que ce ne soit pas gratuit, j'ai trouvé les livres de recettes d'O'Reilly R très utiles
    • R Cookbook by Paul Teetor
    • R Graphics Cookbook by Winston Chang
  • Et, bien sûr, la recherche sur Internet “how do I ____ in r”

Conclusion

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).


Partagez cet article



A propos de l'auteur

dirk baker Dr Dirk V Baker est un scientifique senior et le directeur du programme scientifique mondial de Campbell Scientific. Ses domaines d'intérêt sont notamment l'écologie, l'agriculture et la météorologie. Il est titulaire d'une licence en biologie de la faune et d'un doctorat en malherbologie, tous deux de l'Université d'État du Colorado. Les recherches de Dirk, tant au niveau du doctorat que du post-doctorat, se sont concentrées sur la mesure et la modélisation de la dispersion des plantes par le vent.

Voir tous les articles de cet auteur.


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

Please log in or register to comment.