Come funzionano le operazioni che coinvolgono due tabelle di dati separate?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ad esempio, quando voglio dividere ogni valore della colonna 1 dalla tabella di dati 1 di ogni valore della colonna 2 dalla tabella dati 2 . Mi sembra di avere problemi a farlo e mi chiedo perché viene visualizzato questo errore "L'accesso alla tabella dei dati con ambito richiede una colonna o una variabile della tabella dei dati{1} nell'accesso o nella valutazione di 'dtbinsum:column' , dtbinsum:column/*### */(Numeri ) /*###*/"
La parte del mio script è simile a questa:
//Inizio dello script
dt = tabelladaticorrente();
dtbinsum = dt << Riepilogo(
Gruppo( :File di dati, :ID lotto, :SBIN ),
Freq( "Nessuno"),
Peso( "Nessuno"),
formato del nome della colonna delle statistiche ("colonna"),
Collegamento alla tabella dati originale( 0 )
);
dtbinsum<< Seleziona dove( dtbinsum:sbin != 1 );
dtbinsum<< Elimina righe;
dtbinsum2 = dt << Riepilogo(
Gruppo( :Lotto id ),
N(:SBIN),
Freq( "Nessuno"),
Peso( "Nessuno")
);
rendimento = {};
for(i=0, i
yield_temp = (dtbinsum:column(Nrows ))/(dtbinsum2:colonna(N(SBIN) ));
Inserisci in(yield,yield_temp);
);
Mostra(rendimento);
//Fine dello script
So che il mio modo non è probabilmente il modo più efficiente per farlo, per non parlare dell'errore che mostra, ma qualcuno ha una soluzione a questo?
Re: Come funzionano le operazioni che coinvolgono due tabelle di dati separate?questo è quanto sono arrivato prima di ricevere il seguente errore:
Nome non risolto: in accesso o valutazione di " , Nome(" ")/*###*/
codice:
dt1 = tabella dati ( "tavola principale" ) ;
dt2 = tabella dati ( "Divisione tabella REF" ) ;
coll = dt1 << ottenere i nomi delle colonne ( corda ) ;
per ( io = 2 , io <= N col ( dt1 ) , io ++,
una_colonna = coll [ io ] ;
val = ( Colonna ( dt1 , una_colonna ) << getValues )
( Colonna ( dt2 , una_colonna ) << getValues ) ;
dt1 << Nuova colonna ( una_colonna , Numerico , I valori ( val )) ;
) ;
lo script riesce a fare un giro nel ciclo creando così una colonna con valori corretti.
Re: Come funzionano le operazioni che coinvolgono due tabelle di dati separate?Potresti darmi suggerimenti su come modifico la tua formula per funzionare in un ciclo for?
dovrebbe fare la stessa cosa del tuo script ma per tutte le colonne, il nome della nuova tabella dovrebbe essere l'intestazione della colonna acquisita + Quoziente
dt1 = tabella dati ("tabella principale");
dt2 = tabella dati ("tabella di riferimento");
coll = dt << ottenere i nomi delle colonne ( corda ) ;
for ( i = 2, i <= N colonne (myTable), i++,
// ho provato diverse versioni di un riferimento alle colonne nella mia tabella principale ma non riesco a farlo funzionare
val = ( Colonna ( dt1 , colonna (i) ) << getValues )
( Colonna ( dt2 , colonna (i ) ) << getValues ) ;
dt1 << Nuova colonna ( coll , Numerico , Continuo , I valori ( val )) ;
);
BR
Anders
Re: Come funzionano le operazioni che coinvolgono due tabelle di dati separate?Grazie Ian, ora che hai sottolineato che le sue operazioni sagge sugli elementi, ora ha molto senso.
Re: Come funzionano le operazioni che coinvolgono due tabelle di dati separate?( Colonna ( dt1 , "Numeratore" ) << getValues ) inserisce i valori dalla colonna specificata in un vettore riga (che, nell'esempio, è lo stesso di v1). ( Colonna ( dt2 , "Denominatore" ) << getValues ) fa la stessa cosa con l'altra colonna (che in realtà è lo stesso vettore di riga di v2). Poi il
l'operatore richiede una divisione per elemento, ovvero dividere il primo elemento del primo vettore per il primo elemento del secondo vettore per ottenere il primo elemento del vettore risultato (e così via per gli altri elementi).
Dai un'occhiata alla sezione "Matrici" nel Capitolo 7 di "Aiuto > Libri > Guida agli script".
Re: Come funzionano le operazioni che coinvolgono due tabelle di dati separate?Grazie Ian, funziona per me ma posso chiederti di questa linea in particolare?
val = ( Colonna ( dt1 , "Numeratore" ) << getValues )
( Colonna ( dt2 , "Denominatore" ) << getValues ) ;
^
Il modo in cui capisco JSL è che i due punti aiutano a identificare le colonne, se usato in questo modo, come funziona?
Re: Come funzionano le operazioni che coinvolgono due tabelle di dati separate?Qualcosa del genere forse:
NomiDefaultToHere ( 1 ) ;
// Crea un paio di tabelle
v1 = J ( 10 , 1 , Intero casuale ( 1 , 5 )) ;
v2 = J ( 10 , 1 , Intero casuale ( 1 , 5 )) ;
dt1 = Nuova tabella ( "Tabella 1" , Nuova colonna ( "Numeratore" , Numerico , Ordinale , I valori ( v1 ))) ;
dt2 = Nuova tabella ( "Tavolo 2" , Nuova colonna ( "Denominatore" , Numerico , Ordinale , I valori ( v2 ))) ;
// Aggiunge una colonna quoziente alla tabella 1
Attesa ( 3 ) ;
val = ( Colonna ( dt1 , "Numeratore" ) << getValues )
( Colonna ( dt2 , "Denominatore" ) << getValues ) ;
dt1 << Nuova colonna ( "Quoziente" , Numerico , Continuo , I valori ( val )) ;