Los datos se cargan desde un archivo CSV remoto alojado en GitHub. El procedimiento PROC HTTP se utiliza para descargar el archivo en una ubicación temporal, que luego es leído por un paso DATA.
1 Bloque de código
PROC HTTP
Explicación : Este bloque utiliza el procedimiento HTTP para descargar el contenido de un archivo CSV desde una URL en GitHub. El contenido se almacena en un archivo temporal referenciado por 'birdcsv'.
Explicación : Este paso DATA lee el archivo CSV temporal. Define la estructura de la tabla de destino 'WORK.BIRDS_EVENTS', incluyendo informats y formatos para cada columna, y luego carga los datos ignorando la primera línea de encabezado (firstobs=2).
¡Copiado!
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;
Explicación : Este bloque SQL crea una tabla resumen 'WORK.birds_DailyDetect'. Agrupa los datos por fecha, nombre científico y nombre común, y cuenta el número de detecciones para cada grupo. También extrae un nombre de familia tomando la última palabra del nombre común.
¡Copiado!
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 Bloque de código
PROC SORT
Explicación : Este procedimiento ordena la tabla agregada 'birds_dailyDetect' según la columna 'Family'. Esta ordenación es útil para la organización de los datos, aunque no tiene un impacto directo en el gráfico SGPLOT final tal como se define.
¡Copiado!
proc sort data=birds_dailyDetect;
by Family;
run;
1
2
PROC SORT
3
DATA=birds_dailyDetect;
4
BY Family;
5
RUN;
6
5 Bloque de código
PROC SGPLOT
Explicación : Este bloque utiliza SGPLOT para crear una visualización. Se genera un diagrama de dispersión con la fecha en el eje X y el nombre común del ave en el eje Y. El color de cada punto está determinado por el número de detecciones ('Detections'), creando así un mapa de calor que muestra los días y las especies con mayor actividad.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.