Die Beispiele verwenden intern generierte Daten (Datalines) für die Tabellen 'crime_data' und 'census_data', um jeden Codeblock eigenständig und ausführbar zu machen.
1 Codeblock
DATA STEP / FEDSQL.EXECDIRECT Data
Erklärung : Dieser Code erstellt zwei temporäre CAS-Tabellen, `crime_data` und `census_data`, aus Inline-Daten. Anschließend wird `fedsql.execdirect` verwendet, um einen Join (`JOIN`) auf der Spalte `community_area` durchzuführen, um die Informationen beider Tabellen in einer neuen Tabelle namens `CrimeCensusBasique` zu kombinieren. Schließlich wird `table.fetch` verwendet, um die ersten fünf Zeilen der resultierenden Tabelle anzuzeigen.
Kopiert!
* 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;
Erklärung : Dieses Beispiel erweitert den Basisfall, indem es die Daten aus `CrimeCensusBasique` nach 'THEFT'-Verbrechen über einen bestimmten Zeitraum filtert. Anschließend werden die Ergebnisse nach Verbrechensart, Gemeindegebiet, Härteindex und Pro-Kopf-Einkommen aggregiert, wobei die Anzahl der Verbrechen gezählt wird. Nur Gruppen mit mindestens 2 Verbrechen werden berücksichtigt, und die Ergebnisse werden nach absteigender Anzahl der Verbrechen sortiert.
Kopiert!
* 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 count_crimes 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 count_crimes DESC";
12
RUN;
3 Codeblock
FEDSQL.EXECDIRECT
Erklärung : Dieser Code demonstriert eine fortgeschrittenere FedSQL-Abfrage. Er verknüpft die Tabellen `crime_data` und `census_data` und wendet eine Filterbedingung auf `community_area` basierend auf einer Unterabfrage an: Es werden nur Gemeindegebiete mit einem `hardship_index` über 60 berücksichtigt. Zusätzlich wird eine neue Spalte `IncomeCategory` mithilfe einer `CASE`-Anweisung erstellt, um die Gebiete nach ihrem Pro-Kopf-Einkommen zu klassifizieren. `table.fetch` wird verwendet, um das Ergebnis zu visualisieren.
Kopiert!
* 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 Codeblock
FEDSQL.EXECDIRECT / TABLE.FETCH
Erklärung : Dieses Beispiel hebt die In-Memory-Verarbeitungsfähigkeiten von CAS hervor, indem es direkt eine Zusammenfassungstabelle (`SummaryCAS`) über `FEDSQL.EXECDIRECT` erstellt. Die Abfrage berechnet die Gesamtzahl der Verbrechen und das durchschnittliche Einkommen pro Gemeindegebiet. Anschließend wird die Aktion `TABLE.FETCH` verwendet, um die ersten 10 Zeilen dieser neuen Tabelle mit einer benutzerdefinierten Sortierung abzurufen und anzuzeigen, was eine nahtlose Integration zwischen FedSQL und CAS-Tabellenaktionen zur Analyse der Ergebnisse demonstriert.
Kopiert!
* 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;
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.
Zugehörige Dokumentation
Aucune documentation spécifique pour cette catégorie.
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.