Die Daten werden aus einer entfernten CSV-Datei geladen, die auf GitHub gehostet wird. Die PROC HTTP-Prozedur wird verwendet, um die Datei in einen temporären Speicherort herunterzuladen, der dann von einem DATA-Schritt gelesen wird.
1 Codeblock
PROC HTTP
Erklärung : Dieser Block verwendet die HTTP-Prozedur, um den Inhalt einer CSV-Datei von einer GitHub-URL herunterzuladen. Der Inhalt wird in einer temporären Datei gespeichert, die als 'birdcsv' referenziert wird.
Erklärung : Dieser DATA-Schritt liest die temporäre CSV-Datei. Er definiert die Struktur der Zieltabelle 'WORK.BIRDS_EVENTS', einschließlich der Informate und Formate für jede Spalte, und lädt dann die Daten, wobei die erste Kopfzeile ignoriert wird (firstobs=2).
Kopiert!
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;
Erklärung : Dieser SQL-Block erstellt eine zusammenfassende Tabelle 'WORK.birds_DailyDetect'. Er gruppiert die Daten nach Datum, wissenschaftlichem Namen und gebräuchlichem Namen und zählt die Anzahl der Detektionen für jede Gruppe. Er extrahiert auch einen Familiennamen, indem er das letzte Wort des gebräuchlichen Namens nimmt.
Kopiert!
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 Codeblock
PROC SORT
Erklärung : Diese Prozedur sortiert die aggregierte Tabelle 'birds_dailyDetect' basierend auf der Spalte 'Family'. Diese Sortierung ist nützlich für die Datenorganisation, obwohl sie keinen direkten Einfluss auf das endgültige SGPLOT-Diagramm hat, wie es definiert ist.
Kopiert!
proc sort data=birds_dailyDetect;
by Family;
run;
1
2
PROC SORT
3
DATA=birds_dailyDetect;
4
BY Family;
5
RUN;
6
5 Codeblock
PROC SGPLOT
Erklärung : Dieser Block verwendet SGPLOT, um eine Visualisierung zu erstellen. Ein Streudiagramm wird mit dem Datum auf der X-Achse und dem gebräuchlichen Namen des Vogels auf der Y-Achse generiert. Die Farbe jedes Punktes wird durch die Anzahl der Detektionen ('Detections') bestimmt, wodurch eine Heatmap entsteht, die die Tage und Arten mit der höchsten Aktivität anzeigt.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.