Utilizzo delle colonne come variabileCiao a tutti !
Questo è il mio primo post, ma non l'ultimo spero!
Sto lavorando per assaggiare i risultati. Gli assaggiatori mettono i campioni in gruppi diversi, se la lettera è la stessa, i campioni sono nello stesso gruppo. la prima colonna è il riferimento del campione e dopo ho una colonna da assaggiatore. Ho una tabella così:
NUM ECH D1 D2 D3
123 A A B
234 A B B
345 B B C
Vorrei avere una nuova tabella per assaggiatore, con 0 se i campioni sono nello stesso gruppo e 1 se non lo sono.
Per il primo assaggio la nuova tavola è:
NUM ECH 123 234 345
123 0 0 1
234 0 0 1
345 1 1 0
Non ho nessun problema a creare questa nuova tavola per un assaggiatore, ma vorrei per tutti gli assaggiatori, quindi per tutte le colonne. Alla fine, devo sommare tutta la tabella per avere la distanza tra i campioni.
Per questo, non so davvero come usare le colonne come variabile, se è possibile o meno ...
Potresti aiutarmi ?
sto iniziando a scrivere in JMP!
Grazie per l'aiuto !
Margaux
Tabella datiRe: Utilizzo delle colonne come variabiliGrazie mille, funziona perfettamente!
In effetti, l'ultimo ciclo è utile.
non ho mai usato il vettore prima, questo è un buon aiuto!
Re: Utilizzo delle colonne come variabili@MargauxR ,
Il primo script che ho allegato non ha raggiunto l'obiettivo dichiarato.Se questa tabella soddisfa le tue esigenze, lo script modificato è allegato.
dt = Data Table("Tasters");
samples = dt:NUM ECH << get values;
nsamp = nitems(samples);
dtnew = New Table("Taster Match", New Column("Taster", Character),
New Column("NUM ECH", character));
for(l=1, l<= nsamp, l++,
dtnew << New Column(samples[l], Numeric)
);
vec = J(nsamp, 1, 1);
//get taster info
currRow = 0;
for(i= 2, i<=ncol(dt), i++,
tester = column(dt,i) << get name;
for(j = 1, j<=nsamp, j++,
idx = dt << get rows where (column(dt,i)[]==column(dt,i)[Row()=j]);
nr = nrow(idx);
tvec = vec;
if(nr > 0,
tvec[idx] = 0;
);
dtnew << add row(1);
currRow++;
dtnew:Taster[currRow] = tester;
dtnew:NUM ECH[currRow] = samples[j];
//write out results
dtnew[currRow,3::nsamp+2] = Transpose(tvec);
); //end for j
); // end for iRe: Utilizzo delle colonne come variabiliCiao a tutti
Ho ancora un problema. Ho provato a cambiare un po' il codice, perché i miei gruppi avranno un nome diverso a seconda dell'assaggiatore.
Funziona quasi, ma ho un problema di ripetizione. Se l'assaggiatore mette più campioni nello stesso gruppo, quindi con lo stesso "nome", lo script aggiungerà più righe, in relazione al numero di volte che il nome viene ripetuto.
Alla e, voglio solo una riga per campione.
Non riesco a trovare dov'è l'errore...
Faccio lo script sul tavolo "assaggiatori" e il risultato è "taster match 3"
Potresti aiutarmi ?
Re: Utilizzo delle colonne come variabili@gzmorgan0
Grazie mille per la tua risposta ! sembra funzionare! Non pensavo di lavorare in quel modo...
Proverò sul mio tablea tomoorow, ti dirò se va tutto bene.
Riguardo al mio tavolo, l'ho reso facile di quello che è. Infatti, ogni lettera corrisponde a un gruppo di parole per descrivere il gruppo. Ma posso gestire quella parte;)
Grazie ancora !
Re: Utilizzo delle colonne come variabili@MargauxR ,
Il tuo problema è stato interessante, anche se ho trovato strana la tua tabella risultante: perde i valori del voto/gruppo!
L'assaggiatore D1 e D5 potrebbe raggruppare i campioni in modo identico, ma D1 dà loro un A e D5 un C?
Oh bene!Ho ampliato la tua tabella di esempio. Questa tabella e lo script sono allegati. Penso che faccia quello che vuoi.
Se non conosci JSL, devi usare Aiuto>Indice script per cercare i messaggi della tabella JSL come Ottieni righe dove() e Aggiungi righe, ncol(dt), Sort, ecc.

