potresti ottenere molte date che condividono la massima profondità... Ecco come ottenerle:
proc sql;
creare picchi di tabella come
selezionare anno(data) come anno, data, profondità
da mieidati
gruppo per anno calcolato
avendo profondità = max(profondità);
seleziona *dai picchi;
esentato;
PAG
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ci sarebbero molti modi per affrontare il tuo problema. Per iniziare, prendiamo sashelp.class come esempio, usando "sesso" come l'equivalente del tuo "anno", "altezza" fino alla "altezza della neve":
1. Soluzione SQL:
proc sql;
crea tabella desidera come
seleziona a. * da sashelp.class a,
(seleziona sesso, massimo (altezza) come massimo dal gruppo sashelp.class per sesso) b
dove a.sex = b.sex e a.height = b.max
;
smettere;
2. Passaggio dati;
proc sort data = sashelp.class out = tem;
per sesso;
correre;
richiesta di dati (drop = _h);
fare fino a (last.sex);
impostare tem;
per sesso;
_h = max (_h, altezza);
fine;
fare fino a (last.sex);
impostare tem;
per sesso;
se height = _h quindi output;
fine;
correre;
E, naturalmente, ci sono molti altri modi, come il sommario del proc ecc., Che vale la pena esaminare:
proc sommario = sashelp.class nway;
sesso di classe;
altezza var;
output out = want (drop = _
maxid (altezza (nome) altezza (età) altezza (peso)) = nome età peso max =;
correre;
Saluti,
Haikuo
L'approccio delineato da mpb è eccellente per aggiungere la profondità massima alla tabella originale. Ho modificato il mio esempio originale per stampare la profondità massima e la data dalla tabella. Presumo che tu abbia i campi Snow Date (tipo di data) e Snow Depth (numero). Ho aggiunto una formula di colonna per una colonna anno.
dt= Nuova tabella( "Nevicata",
Aggiungi righe (20 ),
Nuova colonna( "Profondità della neve",Numerico,Continuo, Formato( "Migliore", 12 ),
Imposta valori (
[34, 45, 53, 56, 99, 67, 12, 78, 53, 89, 77, 90, 48, 12, 73, 23, 12, 34,
6, 45] ) ),
Nuova colonna( "Data della neve",Numerico,Continuo, Formato( "ddMonyyyy", 10 ),
Formato di input ("ddMonyyyy" ),
Imposta valori (
[1767225600, 1771113600, 1805155200, 1809129600, 1843084800, 1838160000,
1889049600, 1893283200, 1896220800, 1900281600, 1950566400, 1955491200,
1957651200, 1964217600, 1990396800, 1995926400, 2023488000, 2029449600,
2051481600, 2056752000] ) ),
Nuova colonna( "Anno della neve",Numerico,Continuo, Formato( "Migliore", 12 ),
Formula (Anno( :Data della neve ) ),
Serratura (1 )
)
);
// Ottieni la nevicata più alta per ogni anno
riassumere(lista_anni=di (:Anno della neve ),elenco_profondità_massima=massimo(:Profondità della neve ));
// Ora scopri le date delle nevicate più intense
per (i = 1, i <= nuove righe(elenco_profondità_massima ), i++,
un_anno=elenco_anni [ i ];
una_profondità=elenco_profondità_massima [ i ];
// Potrebbe avere la stessa profondità massima della neve in giorni diversi
un_anno_massimo_righe=dt<<ottenere righe in cui (:Anno della neve== nell'a(un_anno )&
:Profondità della neve==una_profondità );
per (k = 1, k <= nuove righe(un_anno_massimo_righe ), k++,
m =un_anno_massimo_righe [ k ];
data_neve= :Data della neve [ m ];
print ( "Nevicata massima di " || char ( one_depth ) || " su " ||
formato(data_neve, "ddMonyyyy"));
);
);