Ricerca / copia di un valore in una cella su una linea diversaHo difficoltà a trovare una buona soluzione al mio particolare problema anche dopo alcune ricerche approfondite nel forum e nei file di aiuto di JMP.
Ho un set di dati con pazienti, ognuno dei quali ha più fasi di uno studio in righe successive (perché ogni paziente ha un numero diverso di fasi). Una delle colonne è la fase e in una di queste righe per ogni paziente, c'è una fase denominata "Base". Sto cercando di definire una nuova variabile per posizionare il valore Yy di "Base" nella stessa riga degli identificatori del paziente. Vedi sotto:
Paziente # Nome paziente Fase Yy = Variabile di interesse Nuova colonna = "Base" [per paziente]
1 paziente XYZ abc 4 // desidera 2 qui
1 def 8
1 Base 2
1 ghi 10
2 MNO paziente abc 45 // desidera 54 qui
2 anni 36
2 ghi 24
2 Base 54
3
3
3
3
Qualsiasi aiuto è apprezzato!
Grazie,
Ha disegnato
Ri: Trovare / copiare un valore in una cella su una linea diversaCi sono diversi metodi per farlo. @ron_horne Il metodo può essere fatto con punta e clicca. Lo script seguente utilizza un array associativo che è chiamato un dizionario o ricerca in altri software.
sentivo la mancanza @ron_horne tavolo, quindi ne ho uno diverso. Ecco lo script e allegato è una tabella con questo script incorporato come script di tabella. Basta fare clic per correre.
Names default to here(1);
dt = current data table();
brows = dt << get rows where(:Phase == "Base");
aa = Associative Array( Column("Patient #")[brows], Column("Yy = Variable of interest")[brows]);
// patient numbers are the keys and the Base values, the values
nc = dt << New Column("New Column = \!"Base\!" [by patient]", numeric, Continuous);
nc << set each value(If(length(:Patient Name) > 0, aa[Column("Patient #")[]] ) );Ri: Trovare / copiare un valore in una cella su una linea diversaCiao @ drmn43 ,
prova il seguente script sulla tabella allegata.
Altrimenti è molto più facile farlo manualmente seguendo gli stessi passaggi.
dt = Current Data Table();
dt << select where( :Phase == "Base" );
subdt = dt << Subset( Selected Rows( 1 ) );
dt << clear select;
// make a sleek change of names
subdt << delete columns( "Base by Patient" );
subdt:Name( "Yy = Variable of interest" ) << Set Name( "Base by Patient" );
// Before updating the it is useful to delete columns that we do not want to updat
keep = {"Patient #", "Base by Patient"};
todelete = subdt << get column names( "string" );
For( icol = 1, icol <= N Items( keep ), icol++,
Remove From( todelete, Contains( todelete, Keep[icol] ), 1 )
);
subdt << delete columns( todelete );
dt << Update( With( Data Table( "Subset of Database" ) ), Match Columns( :Patient # = :Patient # ) );
Close( subdt, no save );
se hai bisogno delle altre righe vuote, posso aggiungere un altro passo o due per farlo.
Ron