Comment fonctionnent les opérations impliquant deux tables de données distinctes ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Par exemple, quand je veux diviser chaque valeur de la colonne 1 du tableau de données 1 par chaque valeur de la colonne 2 du tableau de données 2 . Je semble avoir des problèmes à le faire et je me demande pourquoi cette erreur apparaît "L'accès à la table de données étendue nécessite une colonne ou une variable de table de données{1} dans l'accès ou l'évaluation de 'dtbinsum:column' , dtbinsum:column/*### */(Nrows ) /*###*/"
La partie de mon script ressemble à ceci:
//Début du script
dt = tablededonnéesactuelle();
dtbinsum = dt << Résumé(
Groupe( :Fichier de données, :Identifiant de lot, :SBIN ),
Fréq( "Aucun" ),
Poids( "Aucun" ),
format de nom de colonne de statistiques( "column" ),
Lien vers la table de données d'origine ( 0 )
);
dtbinsum<< Sélectionnez Où( dtbinsum:sbin != 1 );
dtbinsum<< Supprimer les lignes ;
dtbinsum2 = dt << Résumé(
Groupe( :Identifiant du lot ),
N(:SBIN),
Fréq( "Aucun" ),
Poids( "Aucun" )
);
rendement = {} ;
for(i=0, i
rendement_temp = (dtbinsum:column(Nrows ))/(dtbinsum2:column(N(SBIN) ));
Insérer dans (rendement, rendement_temp);
);
Afficher (rendement);
//Fin du script
Je sais que mon chemin n'est probablement pas le moyen le plus efficace de le faire, sans parler de l'erreur qui s'affiche, mais est-ce que quelqu'un a une solution à cela?
Re : Comment fonctionnent les opérations impliquant deux tables de données distinctes ?c'est jusqu'où je suis allé avant de recevoir l'erreur suivante:
Nom non résolu : en cours d'accès ou d'évaluation de " , Nom(" ")/*###*/
code:
dt1 = tableau de données ( "tableau principal" ) ;
dt2 = tableau de données ( "Fraction de table REF" ) ;
cols = dt1 << obtenir les noms de colonnes ( chaîne ) ;
pour ( je = 2 , je <= N cols ( dt1 ) , je ++,
une_colonne = cols [ je ] ;
vals = ( Colonne ( dt1 , une_colonne ) << getValues )
( Colonne ( dt2 , une_colonne ) << getValues ) ;
dt1 << NouvelleColonne ( une_colonne , Numérique , Valeurs ( vals )) ;
) ;
le script parvient à faire un tour dans la boucle créant ainsi une colonne avec des valeurs correctes.
Re : Comment fonctionnent les opérations impliquant deux tables de données distinctes ?Pourriez-vous me donner des suggestions sur la façon dont je modifie votre formule pour qu'elle fonctionne dans une boucle for?
il devrait faire la même chose que votre script mais pour toutes les colonnes, le nom de la nouvelle table devrait être l'en-tête de la colonne acquise + Quotient
dt1 = table de données ("table principale");
dt2 = table de données ("table de référence");
cols = dt << obtenir les noms de colonnes ( chaîne ) ;
for ( i = 2, i <= N cols (myTable), i++,
// j'ai essayé différentes versions d'une référence aux colonnes de ma table principale mais je n'arrive pas à la faire fonctionner
vals = ( Colonne ( dt1 , colonne(i) ) << getValues )
( Colonne ( dt2 , colonne(je ) ) << getValues ) ;
dt1 << NouvelleColonne ( cols , Numérique , Continu , Valeurs ( vals )) ;
);
BR
Anders
Re : Comment fonctionnent les opérations impliquant deux tables de données distinctes ?Merci Ian, maintenant que vous avez souligné que ses opérations élémentaires, cela a beaucoup de sens maintenant.
Re : Comment fonctionnent les opérations impliquant deux tables de données distinctes ?( Colonne ( dt1 , "Numérateur" ) << getValues ) place les valeurs de la colonne spécifiée dans un vecteur ligne (qui, dans l'exemple, est le même que v1). ( Colonne ( dt2 , "Dénominateur" ) << getValues ) fait la même chose avec l'autre colonne (qui est en fait le même vecteur ligne que v2). Puis le
demande une division élément par élément, c'est-à-dire diviser le premier élément du premier vecteur par le premier élément du deuxième vecteur pour obtenir le premier élément du vecteur résultat (et ainsi de suite pour les autres éléments).
Jetez un œil à la section 'Matrices' du chapitre 7 de 'Aide > Livres > Guide de script'.
Re : Comment fonctionnent les opérations impliquant deux tables de données distinctes ?Merci Ian, cela fonctionne pour moi mais puis-je vous poser des questions sur cette ligne en particulier ?
vals = ( Colonne ( dt1 , "Numérateur" ) << getValues )
( Colonne ( dt2 , "Dénominateur" ) << getValues ) ;
^
La façon dont je comprends JSL est que les deux-points aident à identifier les colonnes, si elles sont utilisées comme ça, comment ça marche?
Re : Comment fonctionnent les opérations impliquant deux tables de données distinctes ?Quelque chose comme ça peut-être :
NomsDefaultToHere ( 1 ) ;
// Créer quelques tableaux
v1 = J ( dix , 1 , Entier aléatoire ( 1 , 5 )) ;
v2 = J ( dix , 1 , Entier aléatoire ( 1 , 5 )) ;
dt1 = NouveauTable ( "Tableau 1" , NouvelleColonne ( "Numérateur" , Numérique , Ordinal , Valeurs ( v1 ))) ;
dt2 = NouveauTable ( "Tableau 2" , NouvelleColonne ( "Dénominateur" , Numérique , Ordinal , Valeurs ( v2 ))) ;
// Ajouter une colonne de quotient au tableau 1
Attendez ( 3 ) ;
vals = ( Colonne ( dt1 , "Numérateur" ) << getValues )
( Colonne ( dt2 , "Dénominateur" ) << getValues ) ;
dt1 << NouvelleColonne ( "Quotient" , Numérique , Continu , Valeurs ( vals )) ;