Les données sont chargées à partir d'un fichier CSV distant hébergé sur GitHub. La procédure PROC HTTP est utilisée pour télécharger le fichier dans un emplacement temporaire, qui est ensuite lu par une étape DATA.
1 Bloc de code
PROC HTTP
Explication : Ce bloc utilise la procédure HTTP pour télécharger le contenu d'un fichier CSV depuis une URL sur GitHub. Le contenu est stocké dans un fichier temporaire référencé par 'birdcsv'.
Explication : Cette étape DATA lit le fichier CSV temporaire. Elle définit la structure de la table de destination 'WORK.BIRDS_EVENTS', incluant les informats et formats pour chaque colonne, puis charge les données en ignorant la première ligne d'en-tête (firstobs=2).
Copié !
data WORK.BIRDS_EVENTS;
infile BIRDCSV delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2;
informat Date yymmdd10.;
informat Time time20.3;
informat Sci_Name $30.;
informat Com_Name $30.;
informat Confidence best32.;
informat Lat best32.;
informat Lon best32.;
informat Cutoff best32.;
informat Week best32.;
informat Sens best32.;
informat Overlap best32.;
informat File_Name $57.;
format Date yymmdd10.;
format Time time20.3;
format Sci_Name $30.;
format Com_Name $30.;
format Confidence best12.;
format Lat best12.;
format Lon best12.;
format Cutoff best12.;
format Week best12.;
format Sens best12.;
format Overlap best12.;
format File_Name $57.;
input
Date
Time
Sci_Name $
Com_Name $
Confidence
Lat
Lon
Cutoff
Week
Sens
Overlap
File_Name $
;
run;
Explication : Ce bloc SQL crée une table de synthèse 'WORK.birds_DailyDetect'. Il regroupe les données par date, nom scientifique et nom commun, et compte le nombre de détections pour chaque groupe. Il extrait également un nom de famille en prenant le dernier mot du nom commun.
Copié !
PROC SQL;
CREATE TABLE WORK.birds_DailyDetect AS
SELECT t1.Date,
t1.Sci_Name,
t1.Com_Name,
scan(t1.Com_Name,-1,' ') as Family,
/* Detections */
(COUNT(t1.Date)) AS Detections FROM WORK.birds_events t1 GROUP BY t1.Date, Family, t1.Sci_Name, t1.Com_Name;
QUIT;
1
PROC SQL;
2
CREATE TABLE WORK.birds_DailyDetect AS
3
SELECT t1.Date,
4
t1.Sci_Name,
5
t1.Com_Name,
6
scan(t1.Com_Name,-1,' ') as Family,
7
/* Detections */
8
(COUNT(t1.Date)) AS Detections FROM WORK.birds_events t1 GROUP BY t1.Date, Family, t1.Sci_Name, t1.Com_Name;
9
QUIT;
4 Bloc de code
PROC SORT
Explication : Cette procédure trie la table agrégée 'birds_dailyDetect' en fonction de la colonne 'Family'. Ce tri est utile pour l'organisation des données, bien qu'il n'ait pas d'impact direct sur le graphique SGPLOT final tel que défini.
Copié !
proc sort data=birds_dailyDetect;
by Family;
run;
1
2
PROC SORT
3
DATA=birds_dailyDetect;
4
BY Family;
5
RUN;
6
5 Bloc de code
PROC SGPLOT
Explication : Ce bloc utilise SGPLOT pour créer une visualisation. Un nuage de points est généré avec la date sur l'axe des X et le nom commun de l'oiseau sur l'axe des Y. La couleur de chaque point est déterminée par le nombre de détections ('Detections'), créant ainsi une heatmap qui montre les jours et les espèces avec le plus d'activité.
Copié !
ods graphics / width=1000 height=2000;
/* ods html5(eghtml) gtitle; */
proc sgplot data=work.birds_DailyDetect;
title "Birdsong Detections by Day - from BirdNET-Pi";
scatter x=Date y=Com_Name / colorresponse=Detections
colormodel=(lightblue lightgreen darkgreen lightorange orange red darkred)
markerattrs=(size=4);
xaxis grid minor;
yaxis fitpolicy=none grid minor valueattrs=(size=8pt) display=(nolabel);
run;
1
ods graphics / width=1000 height=2000;
2
/* ods html5(eghtml) gtitle; */
3
4
PROC SGPLOTDATA=work.birds_DailyDetect;
5
title "Birdsong Detections by Day - from BirdNET-Pi";
colormodel=(lightblue lightgreen darkgreen lightorange orange red darkred)
8
markerattrs=(size=4);
9
xaxis grid minor;
10
yaxis fitpolicy=none grid minor valueattrs=(size=8pt) display=(nolabel);
11
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.