Los ejemplos utilizan datos generados internamente (datalines) para las tablas 'crime_data' y 'census_data' con el fin de que cada bloque de código sea autónomo y ejecutable.
1 Bloque de código
DATA STEP / FEDSQL.EXECDIRECT Data
Explicación : Este código crea dos tablas CAS temporales, `crime_data` y `census_data`, a partir de datos en línea. Luego utiliza `fedsql.execdirect` para realizar una unión (`JOIN`) en la columna `community_area` para combinar la información de ambas tablas en una nueva tabla llamada `CrimeCensusBasique`. Finalmente, `table.fetch` se usa para mostrar las primeras cinco filas de la tabla resultante.
¡Copiado!
* Connexion à CAS et chargement des données de démonstration;
options cas convenient;
caslib _all_ assign;
* Création de données de démonstration pour CRIME;
data mycas.crime_data (promote=yes);
infile datalines dsd;
input primary_type $ date :yymmdd10. community_area arrest $;
format date yymmdd10.;
datalines;
"THEFT",2015-03-15,10,"FALSE"
"BATTERY",2015-06-20,10,"TRUE"
"THEFT",2015-04-01,15,"FALSE"
"ASSAULT",2016-01-10,20,"TRUE"
"THEFT",2015-08-01,10,"FALSE"
"THEFT",2015-09-05,15,"TRUE"
"THEFT",2015-10-10,20,"FALSE"
"BATTERY",2016-02-01,10,"TRUE"
"THEFT",2015-11-20,15,"FALSE"
"ASSAULT",2015-12-25,20,"TRUE"
"THEFT",2016-01-05,10,"FALSE"
"THEFT",2016-01-15,10,"FALSE"
"THEFT",2016-01-20,10,"FALSE"
"THEFT",2016-01-25,10,"FALSE"
"THEFT",2016-01-30,10,"FALSE"
"THEFT",2016-01-01,15,"FALSE"
"THEFT",2016-01-02,15,"FALSE"
"THEFT",2016-01-03,15,"FALSE"
"THEFT",2016-01-04,15,"FALSE"
"THEFT",2016-01-05,15,"FALSE"
;
run;
* Création de données de démonstration pour CENSUS;
data mycas.census_data (promote=yes);
infile datalines dsd;
input community_area hardship_index per_capita_income;
datalines;
10,50,30000
15,70,20000
20,30,45000
25,90,15000
;
run;
proc cas;
fedsql.execdirect /
query="CREATE TABLE CrimeCensusBasique {options replace=true} AS
SELECT T1.primary_type, T1.date, T1.arrest,
T2.hardship_index, T2.per_capita_income, T1.community_area
FROM crime_data AS T1 JOIN census_data AS T2
ON T1.community_area = T2.community_area";
run;
proc cas;
table.fetch /
table="CrimeCensusBasique"
to=5;
run;
1
* Connexion à CAS et chargement des données de démonstration;
2
options cas convenient;
3
caslib _all_ assign;
4
5
* Création de données de démonstration pour CRIME;
6
DATA mycas.crime_data (promote=yes);
7
INFILEDATALINES dsd;
8
INPUT primary_type $ date :yymmdd10. community_area arrest $;
9
FORMAT date yymmdd10.;
10
DATALINES;
11
"THEFT",2015-03-15,10,"FALSE"
12
"BATTERY",2015-06-20,10,"TRUE"
13
"THEFT",2015-04-01,15,"FALSE"
14
"ASSAULT",2016-01-10,20,"TRUE"
15
"THEFT",2015-08-01,10,"FALSE"
16
"THEFT",2015-09-05,15,"TRUE"
17
"THEFT",2015-10-10,20,"FALSE"
18
"BATTERY",2016-02-01,10,"TRUE"
19
"THEFT",2015-11-20,15,"FALSE"
20
"ASSAULT",2015-12-25,20,"TRUE"
21
"THEFT",2016-01-05,10,"FALSE"
22
"THEFT",2016-01-15,10,"FALSE"
23
"THEFT",2016-01-20,10,"FALSE"
24
"THEFT",2016-01-25,10,"FALSE"
25
"THEFT",2016-01-30,10,"FALSE"
26
"THEFT",2016-01-01,15,"FALSE"
27
"THEFT",2016-01-02,15,"FALSE"
28
"THEFT",2016-01-03,15,"FALSE"
29
"THEFT",2016-01-04,15,"FALSE"
30
"THEFT",2016-01-05,15,"FALSE"
31
;
32
RUN;
33
34
* Création de données de démonstration pour CENSUS;
Explicación : Este ejemplo extiende el caso base filtrando los datos de `CrimeCensusBasique` para los crímenes de tipo 'THEFT' durante un período específico. Luego agrega los resultados por tipo de crimen, área comunitaria, índice de dificultad e ingreso per cápita, contando el número de crímenes. Solo se incluyen los grupos con al menos 2 crímenes, y los resultados se ordenan por el número de crímenes de forma descendente.
¡Copiado!
* Les données de démonstration et la table CrimeCensusBasique sont créées dans l'exemple 1;
proc cas;
fedsql.execdirect /
query="SELECT primary_type, COUNT(*) AS count_crimes,
community_area, hardship_index, per_capita_income
FROM CrimeCensusBasique
WHERE primary_type = 'THEFT' AND date BETWEEN '2015-01-01' AND '2016-12-31'
GROUP BY primary_type, community_area, hardship_index, per_capita_income
HAVING COUNT(*) >= 2
ORDER BY primary_type DESC";
run;
1
* Les données de démonstration et la table CrimeCensusBasique sont créées dans l'exemple 1;
2
3
PROC CAS;
4
fedsql.execdirect /
5
query="SELECT primary_type, COUNT(*) AS count_crimes,
6
community_area, hardship_index, per_capita_income
7
FROM CrimeCensusBasique
8
WHERE primary_type = 'THEFT' AND date BETWEEN '2015-01-01' AND '2016-12-31'
9
GROUP BY primary_type, community_area, hardship_index, per_capita_income
10
HAVING COUNT(*) >= 2
11
ORDER BY primary_type DESC";
12
RUN;
3 Bloque de código
FEDSQL.EXECDIRECT
Explicación : Este código demuestra una consulta FedSQL más avanzada. Une las tablas `crime_data` y `census_data` aplicando una condición de filtro en `community_area` basada en una subconsulta: solo se incluyen las áreas comunitarias con un `hardship_index` superior a 60. Además, se crea una nueva columna `IncomeCategory` utilizando una instrucción `CASE` para clasificar las áreas según su ingreso per cápita. `table.fetch` se usa para visualizar el resultado.
¡Copiado!
* Les données de démonstration sont créées dans l'exemple 1;
proc cas;
fedsql.execdirect /
query="CREATE TABLE CrimeCensusAvance {options replace=true} AS
SELECT T1.primary_type, T1.date, T1.arrest,
T2.hardship_index, T2.per_capita_income, T1.community_area,
CASE WHEN T2.per_capita_income > 35000 THEN 'High Income Area'
ELSE 'Low Income Area'
END AS IncomeCategory
FROM crime_data AS T1 JOIN census_data AS T2
ON T1.community_area = T2.community_area
WHERE T1.community_area IN (SELECT community_area FROM census_data WHERE hardship_index > 60)";
run;
proc cas;
table.fetch /
table="CrimeCensusAvance"
to=5;
run;
1
* Les données de démonstration sont créées dans l'exemple 1;
2
3
PROC CAS;
4
fedsql.execdirect /
5
query="CREATE TABLE CrimeCensusAvance {options replace=true} AS
CASE WHEN T2.per_capita_income > 35000 THEN 'High Income Area'
9
ELSE 'Low Income Area'
10
END AS IncomeCategory
11
FROM crime_data AS T1 JOIN census_data AS T2
12
ON T1.community_area = T2.community_area
13
WHERE T1.community_area IN (SELECT community_area FROM census_data WHERE hardship_index > 60)";
14
RUN;
15
16
PROC CAS;
17
TABLE.fetch /
18
TABLE="CrimeCensusAvance"
19
to=5;
20
RUN;
4 Bloque de código
FEDSQL.EXECDIRECT / TABLE.FETCH
Explicación : Este ejemplo destaca las capacidades de procesamiento en memoria de CAS creando directamente una tabla resumen (`SummaryCAS`) a través de `FEDSQL.EXECDIRECT`. La consulta calcula el número total de crímenes y el ingreso promedio por área comunitaria. Luego, la acción `TABLE.FETCH` se utiliza para recuperar y mostrar las primeras 10 filas de esta nueva tabla, con una clasificación personalizada, demostrando una integración fluida entre FedSQL y las acciones de tabla CAS para el análisis de resultados.
¡Copiado!
* Les données de démonstration sont créées dans l'exemple 1;
proc cas;
fedsql.execdirect /
query="CREATE TABLE SummaryCAS {options replace=true} AS
SELECT primary_type, community_area, COUNT(*) AS TotalCrimes,
AVG(per_capita_income) AS AvgIncome
FROM crime_data AS T1 JOIN census_data AS T2
ON T1.community_area = T2.community_area
GROUP BY primary_type, community_area
HAVING TotalCrimes >= 2
ORDER BY TotalCrimes DESC, AvgIncome ASC";
run;
* Afficher les 10 premières lignes de la table SummaryCAS, triées;
proc cas;
table.fetch /
table="SummaryCAS"
to=10
sortby={{name="TotalCrimes", order="descending"}, {name="AvgIncome", order="ascending"}};
run;
1
* Les données de démonstration sont créées dans l'exemple 1;
2
3
PROC CAS;
4
fedsql.execdirect /
5
query="CREATE TABLE SummaryCAS {options replace=true} AS
6
SELECT primary_type, community_area, COUNT(*) AS TotalCrimes,
7
AVG(per_capita_income) AS AvgIncome
8
FROM crime_data AS T1 JOIN census_data AS T2
9
ON T1.community_area = T2.community_area
10
GROUP BY primary_type, community_area
11
HAVING TotalCrimes >= 2
12
ORDER BY TotalCrimes DESC, AvgIncome ASC";
13
RUN;
14
15
* Afficher les 10 premières lignes de la table SummaryCAS, triées;
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.
Documentación relacionada
Aucune documentation spécifique pour cette catégorie.
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.