vous pouvez obtenir plusieurs dates qui partagent la profondeur maximale... Voici comment les obtenir :
proc sql ;
créer des pics de table comme
sélectionnez l'année (date) comme année, date, profondeur
de mesDonnées
regrouper par année calculée
avoir profondeur = max(profondeur);
sélectionnez * devant les pics ;
quitter;
PG
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Il y aurait plusieurs façons de résoudre votre problème. Pour commencer, prenons sashelp.class comme exemple, en utilisant «sexe» comme équivalent à votre «année», «hauteur» à votre «épaisseur de neige»:
1. Solution SQL:
proc sql;
créer une table comme
sélectionnez un. * dans sashelp.class a,
(sélectionnez sexe, max (hauteur) comme maximum dans sashelp.class group par sexe) b
où a.sex = b.sex et a.height = b.max
;
quitter;
2 Étape de données;
proc sort des données = sashelp.class out = tem;
par sexe;
courir;
données veulent (drop = _h);
faire jusqu'au (last.sex);
mettre tem;
par sexe;
_h = max (_h, hauteur);
fin;
faire jusqu'au (last.sex);
mettre tem;
par sexe;
si height = _h alors sortie;
fin;
courir;
Et bien sûr, il existe de nombreux autres moyens, tels que proc summary, etc., qui méritent d’être explorés:
proc summary data = sashelp.class nway;
sexe de classe;
var hauteur;
output out = want (drop = _
maxid (hauteur (nom) hauteur (âge) taille (poids)) = nom âge poids max =;
courir;
Cordialement,
Haikuo
L'approche décrite par mpb est excellente pour ajouter la profondeur maximale à la table d'origine. J'ai modifié mon exemple d'origine pour imprimer la profondeur maximale et la date à partir de la table. Je suppose que vous avez les champs Snow Date (type de date) et Snow Depth (numéro). J'ai ajouté une formule de colonne pour une colonne d'année.
dt= Nouvelle table( "Chute de neige",
Ajouter des lignes (20 ),
Nouvelle colonne( « Profondeur de neige »,Numérique,Continu, Format( "Meilleur", 12 ),
Définir les valeurs (
[34, 45, 53, 56, 99, 67, 12, 78, 53, 89, 77, 90, 48, 12, 73, 23, 12, 34,
6, 45] ) ),
Nouvelle colonne( "Rendez-vous sous la neige",Numérique,Continu, Format( "jjMonyyyy", 10 ),
Format d'entrée ("jjMonyyyy" ),
Définir les valeurs (
[1767225600, 1771113600, 1805155200, 1809129600, 1843084800, 1838160000,
1889049600, 1893283200, 1896220800, 1900281600, 1950566400, 1955491200,
1957651200, 1964217600, 1990396800, 1995926400, 2023488000, 2029449600,
2051481600, 2056752000] ) ),
Nouvelle colonne( « Année de neige »,Numérique,Continu, Format( "Meilleur", 12 ),
Formule (Année( :Date de neige ) ),
Verrouillage (1 )
)
);
// Obtenez les chutes de neige les plus importantes pour chaque année
résumer(liste_des_années=par (:Année de neige ),liste_profondeur_max=max(:Profondeur de neige ));
// Obtenez maintenant les dates des chutes de neige les plus importantes
pour (i = 1, i <= nrows(liste_profondeur_max ), i++,
un_an=année_liste [ i ];
une_profondeur=max_depth_list [ i ];
// Pourrait avoir la même profondeur de neige maximale à des jours différents
nombre_maximum_de_lignes_d'un_an=dt<<obtenir les lignes où (:Année de neige== dans un(un_an )&
:Profondeur de neige==une_profondeur );
pour (k = 1, k <= nrows((un_an_max_lignes ), k++,
m =nombre_max_de_lignes_d'un_an [ k ];
date_neige= :Date de neige [ m ];
print ( "Chute de neige maximale de " || char ( one_depth ) || " sur " ||
format(date_neige, "jjMonyyyy"));
);
);