trovare la modalità<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Vorrei produrre un sommario tabella che fornisce la modalità di una variabile per ogni categoria di un'altra variabile.
idealmente, questo funzionerebbe:
dt = open ("$ SAMPLE_DATA / Mail Messages.jmp");
dt << summary (Group (: From), Mode (: To));
in alternativa, impilarò la tabella per "Da" e calcolerei la modalità su ciascuna riga. tuttavia, "Modalità" non è un'opzione nel riepilogo tabella o nella formula della colonna.
tutte le idee che calcolano la modalità sono benvenute incluso nell'invio a SAS.
sto usando JMP 10.
grazie,
Ron
Ri: trovare la modalità<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Grazie Brady,
Questo è di gran lunga lo script più parsimonioso e robusto.
Vorrei aggiungere una riga di codice opzionale per disabilitare la possibilità di valori mancanti come la modalità:
dt = open ("$ SAMPLE_DATA \ Cars.jmp");
dt2 = dt << summary (group (: Make,: R Leg));
// opzione per disabilitare la possibilità di valori mancanti come modalità
dt2 << Seleziona dove (IsMissing (: R Leg)) << Elimina righe;
dt2 << selectwhere (colmaximum (: n rows,: make)! =: n rows) << Elimina righe;
Ri: trovare la modalità<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Grazie mille.
occupandomi della modalità mi sono imbattuto in due problemi che sembrano guasti del programma JMP.
1. se c'è solo un'osservazione, la piattaforma di distribuzione non fornisce affatto una modalità. Inoltre, anche in caso di frequenza legata di 1 non viene restituito nulla. ciò significa che la definizione nel file della guida non è corretta quando vongola per portare il valore più basso tra i più frequenti.

2. quando la produzione di una tabella Frequenze per la larghezza della colonna è lunga (ovvero 12) la creazione di una tabella di dati non consente il recupero dell'intero numero. per qualche motivo produce una stringa di testo del numero abbreviato.

Ri: trovare la modalità<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Non sono sicuro che ciò sia utile, ma sullo scambio di file JMP Brady Brady ha pubblicato un componente aggiuntivo che offre funzionalità estese di riepilogo delle statistiche tra cui la Modalità.
http://support.sas.com/demosdownloads/downarea_t4.jsp?productID=111731&jmpflag=Y

Ri: trovare la modalità<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Grazie mille MS. E 'molto utile.
In questo modo è in realtà più "onesto" rispetto ad altre alternative menzionate in questa discussione poiché valuta anche la frequenza dei dati mancanti. ad esempio, l'esecuzione del seguente script restituisce alcuni valori mancanti come modalità.
dt = open ("$ SAMPLE_DATA \ Cars.jmp");
mode_by_groups = Funzione ({collist}, // elenco di nomi di colonna
// Trova la modalità dell'ultima colonna nel collist
Riassumi (g = by (Eval (collist)), n = Count ());
X = Design (g [1]): * n;
i = Loc (V max (Transpose (X == Repeat (V max (X), N Row (n)))));
// Aggiungi colonne di raggruppamento alla nuova tabella
dt11 = Nuova tabella ("modalità");
Per (k = 1, k <= N articoli (collist) - 1, k ++,
dt11 << (Nuova colonna (carattere (collista), Carattere, imposta valori (g )));
);
// Aggiungi modalità e N
dt11 << Nuova colonna ("Modalità di" || char (collist), Carattere, imposta valori (g ));
dt11 << Nuova colonna ("N", imposta valori (n ));
);
mode_by_groups ({Make, R Leg});

Ri: trovare la modalità<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Credo che questo produrrà anche il risultato previsto:
dt = open ("$ SAMPLE_DATA \ Cars.jmp");
dt2 = dt << riepilogo (gruppo (: Make,: R Leg));
dt2 << selectwhere (colma maximum (: n righe,: make)! =: n righe) << Elimina righe;
Saluti,
Brady
Re: trovare la modalitàCIAO-la modalità è l'elemento più comune,quindi stai cercando la persona ( o presumibilmente le persone in caso di parità ) che ha ricevuto il maggior numero di lettere da ciascun mittente,è corretto? Se sì,Penso che quanto segue dovrebbe bastare, anche se non ho dubbi che ci sia un modo molto più elegante e/o più breve. Ho deliberatamente lasciato tutti i calcoli intermedi.,e ha nominato tutte le tabelle per lasciare una traccia di controllo:
dt1= aprire ("$SAMPLE_DATA/Messaggi di posta.jmp");
dt1<<imposta nome ("dt1");
dt2=dt1<<Riepilogo ( Gruppo (:Da ), N,Sottogruppo (:A ) );
dt2<<imposta nome ("dt2");
Inviato da=( dt2<<ottenere i nomi delle colonne );
spettacolo(Inviato da );
// Elimina i primi due elementi di questa lista;
rimuovere da(Inviato da, {1, 2});
spettacolo(Inviato da );
// Impilarli;
dt3=dt2<<Pila ( colonne (valutazione(Inviato da )), Colonna etichetta sorgente ("Etichetta" ), Colonna dati impilata ("Dati" ));
dt3<<imposta nome ("dt3");
// dt3 ora contiene il numero di lettere inviate da ciascuna persona a ciascun destinatario;
dt4=dt3<<Riepilogo ( Gruppo (:Da ), Massimo( :Dati ) );
dt4<<imposta nome ("dt4");
// dt4 ora contiene il numero massimo di lettere inviate da ciascuna persona a un singolo destinatario;
dt5=dt4<<Unisciti ( con ( dt3 ),
SelezionaCon ( : Da , : Etichetta , : Dati ) ,
Per colonne corrispondenti (:Da= :Da, :Nome ("Max(Dati)" ) = :Dati ),
Elimina i multipli (0, 0 ),
Nome ( "Includi non corrispondenze" )( 0 , 0 ) ,
Mantieni l'ordine della tabella principale (1 )
);
dt5<<imposta nome ("dt5");
colonna(dt5, "Etichetta") <<imposta nome ("Destinatario");
/*
dt5 dovrebbe ora contenere il numero massimo di lettere inviate da ogni persona a qualsiasi destinatario
e il nome del destinatario (o dei destinatari in caso di parità)
*/
Questo dovrebbe darti che Ann ha inviato 4 lettere a Michael, Jeff ha inviato 7 lettere a Michael, John ha inviato 12 lettere a Michael, Katherine ha inviato 12 lettere a John e così via. Vuoi provare e vedere se funziona? Per ottenere il numero massimo di lettere ricevute da un destinatario da un singolo mittente, basta invertire le colonne :A e :Da.
Re: trovare la modalitàGrazie Dodo,
funziona bene.
Re: trovare la modalitàCiao Dodo e tutti,
La soluzione di Dodo è tecnicamente corretta, ma non è utile quando si ha a che fare con i big data.
riflettendoci ho trovato una soluzione alternativa che è scalabile.
dt1 = Open( "$SAMPLE_DATA/Messaggi di posta.jmp" );
dt1 << imposta nome( "dt1" );
// produce una distribuzione di revciver per mittenti
dt1 << Nuovo script( "Distribuzione", Distribuzione( Distribuzione nominale( Colonna( :A ) ), Per( :Da ) ) );
Dist = Dt1 << Esegui script( "Distribuzione" );
// estrae le tabelle di frequenza come un'unica tabella dati.
dt2 = Report( dist[1] )["Frequenze"][Table Box( 1 )] << Crea tabella dati combinati;
dt2 << imposta nome( "dt2" );
dist << chiudi finestra;
// rimuovere le righe "Totale" dalla tabella dati: non rappresentano frequenze rilevanti
selezione = dt2 << Seleziona Dove( :Livello == "Totale" );
selezione << Elimina righe;
// riepiloga per ottenere la modalità "A" per ogni "Da"
dt3 = Tabella dati( "dt2" ) << Riepilogo( Gruppo( :Da ), Max( :Conteggio ), formato nome colonna statistiche( "colonna" ), Collegamento alla tabella dati originale( 0 ) );
dt3 << Imposta Nome( "Modalità" );
// aggiorna la tabella di riepilogo per ottenere i valori di "A"
dt3 << Aggiorna( Con( Tabella dati( "dt2" ) ), Corrispondenza colonne( :Da = :Da, :Conteggio = :Conteggio ), Aggiungi colonne dalla tabella di aggiornamento( :Livello ) );
dt2 << chiudi finestra;
Colonna( dt3, "Livello" ) << Imposta Nome( "Modalità" );
Re: trovare la modalitàSpesso ci sono diversi modi per eseguire un'attività in JMP. Ho appena ricordato una funzione che ho scritto qualche tempo fa, piuttosto efficiente per trovare l'elemento più comune raggruppato per una o più colonne. La condivido qui come alternativa agli approcci precedenti. Il risultato è simile a quello di Dodo, ovvero vengono restituite tutte le modalità "tied", non solo l'ultima come nell'approccio di Ron che usa update().
mode_by_groups = Funzione ( { collist } , // elenco dei nomi delle colonne
// Trova la modalità dell'ultima colonna in collist
Riassumi ( g = by ( Valutazione ( collist ) ) , n = Contare () ) ;
X = Progettazione ( g [ 1 ] )
n ;
i = Posto ( V Max ( Trasponi ( X == Ripeti ( V Max ( X ) , N Riga ( n ) ) ) ) ) ;
//Aggiungi colonne di raggruppamento alla nuova tabella
dt1 = Nuova tabella ( "modalità" ) ;
Per ( k = 1 , k <= N elementi ( collist ) - 1 , k ++,
dt1 << ( Nuova colonna ( carattere ( collist [ k ]) , Carattere , imposta valori ( g [ k ][ i ] ) )) ;
);
//Aggiungi modalità e N
dt1 << Nuova colonna ( "Modalità di" || carattere ( collist [ k ]) , Character , set values ( g [ k ][ i ] ) ) ;
dt1 << Nuova colonna( "N", set values( n[i] ) );
);
//Esempi
Apri ( "$SAMPLE_DATA/Mail Messages.jmp" ) ;
mode_by_groups ( { Da , A } ) ;
Aprire( "$SAMPLE_DATA/Consumer Preferences.jmp" );
mode_by_groups ( { Genere , Stato di celibe / nubile , Anno di nascita } ) ;