Chers tous,
J'ai du mal à essayer de créer une nouvelle colonne qui est une formule et à lui envoyer une variable dans mon script JSL.
J'ai une table de dates dans laquelle j'essaie de calculer le décalage moyen d'une colonne. La colonne d'intérêt n'est pas nécessairement toujours espacée de manière égale par des lignes, les décalages peuvent parfois changer. Cependant, pour les besoins de mon script, il est acceptable de simplement regarder le décalage moyen pour toute la colonne.
La façon dont j'allais faire cela (et je peux le faire manuellement, mais je préfère l'automatiser avec un script) est de créer une colonne Lag de :X puis de prendre la différence de :X-:Lag(X), puis de prendre le Col C'est méchant. En termes de formule (mathématiques), cela devrait ressembler à :
ave_lag = Col Mean(:X-:Lag(X))
Le problème que j'ai est de créer la nouvelle colonne contenant la formule Lag. Chaque fois que j'essaie d'évaluer le script, il place le texte littéral de ce que j'écris dans la formule et non le nom de colonne prévu. J'ai essayé la commande dt<
J'ai également essayé Eval(Substitute(Expr())), mais il met littéralement la chaîne citée, pas la colonne comme référence, comme :X.
Par exemple, dans le tableau avec lequel je travaille, j'ai essayé ce code :
Eval(
Substitute(
Expr(
dt << New Column( "temp", Formula( Lag( __tcols__ ) ) )
),
Expr( __tcols__ ), xcols[1]
)
);Ce qui produit une colonne "temp", mais la formule est la suivante :

Le nom de la colonne est t et la variable xcols={"t"}. La formule doit ressembler à Lag(:t), une référence à la colonne, pas au nom de la colonne.
J'ai même essayé cet autre code pour extraire le numéro de colonne de :t (il peut changer dans la table de données), puis insérer la colonne (#) dans la formule, mais cela ne fonctionne pas non plus.
collist = dt << Get Column Names( string ); //creates a list of the column names
colnum = Loc( collist, xcols[1] )[1]; //locates the position in the list of the script variable xcols[1].
//This previous part basically gets the column number of the local variable xcol in the data table (it can change).
//This is the script where I'd like it to substitute
Eval(
Substitute(
Expr(
dt << New Column( "temp", Formula( Lag( Column( __tcols__ ) ) ) )
),
Expr( __tcols__ ), colnum
)
);Ce qui produit également une colonne "temp", mais la formule est la suivante :

Je pensais que cela devrait être plus facile que je ne le découvre, mais je dois faire quelque chose de mal/d'étrange parce que je n'obtiens pas les résultats auxquels je m'attendais.
Toute suggestion sur la façon de calculer le décalage moyen d'une colonne est très appréciée. Je n’ai besoin que d’un seul numéro, en fin de compte, je n’ai pas besoin de colonnes supplémentaires.
Merci!,
DS