Forum Discussion

Mederic's avatar
Mederic
Post Patron
3 years ago
Solved

Replace Index Column

Hello all, I thought I had found the solution to my previous thread here but finally it’s more complicated than expected I open a new message with additional information Thank you in advance for y...
  • wdx223_Daniel's avatar
    3 years ago

    = Table.Combine(Table.Group(Source,"Index",{"n",each Table.Combine(Table.Group(_,"Index",{"n",each if [Index]{0}=null then _ else Table.AddIndexColumn(_,"NewIndex",1)})[n])},0,(x,y)=>Byte.From(y=null))[n])
  • slorin's avatar
    3 years ago

    Bonjour Mederic , je crois que vous parlez français (j'espère que les autres contributeurs comprendront, mon anglais n'est pas suffisant).

     

    Difficile de comprendre ce que vous voulez : 

    - pourquoi les cellules -58 et 58 sont elles en jaune ?

    - quelle est la finalité de ces 1 et 2 dans l'index ? 

    vous voulez en "1" la valeur positive et en "2" celle qui est négative ? et donc les intervertir les deux 58 ?

     

    - pourquoi vos deux dernières lignes sont positives ; 82 et  345. D'après les autres exemples elles devraient être négatives.

     

    Pour reprendre un peu l'idée de wdx223_Daniel 

    = Table.Combine(
    Table.Group(
    Source,
    {"Index"},
    {{"Data",
    each Table.ReplaceValue(
    Table.Sort(
    _,
    {{"Index", Order.Ascending},
    {"Amount", Order.Descending}}),
    each Number.Sign([Amount]),
    each null,
    (x,y,z)=> if y=1 then 1 else if y=-1 then 2 else null,
    {"Index"}
    )}},
    GroupKind.Local,
    (x,y)=> if y[Index] = null then 1 else 0)
    [Data])

    On regroupe les lignes avec GroupKindLocal

    à l'intérieur des regroupements on tri par "Index" croissant et par "Amount" décroissant

    je remplace les index par des 1 si "Amount" positif et par des 2 si négatif

     

    Stéphane