Vous cherchez à générer deux colonnes en fonction d'un modèle d'autres colonnesSalut tout le monde,
Je cherche à générer deux nouvelles colonnes basées sur des modèles dans deux autres colonnes ("Required column1" et "Required Column2"). S'il vous plaît voir l'image ci-jointe -

Une aide/suggestion ?
Merci.
ScriptRe : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnesVoici une formule pour la colonne à laquelle vous vous référez Colonne requise 2.Lorsque vous étudiez le code, vous verrez qu'il ne fait qu'appliquer les règles logiques que vous avez énoncées et qui doivent être vérifiées lors de la détermination des valeurs de début et de fin.Il contient également le réglage de la valeur de la colonne Colonne requise 1. Pour exécuter cette formule, créez simplement la colonne requise 1 et la colonne requise 2. Définissez la colonne requise 2 comme colonne de caractères.Ensuite, ouvrez la formule pour la colonne requise 2 et copiez la formule ci-dessous dans la colonne.

RCValue = "";
:Required Column 1[Row()] = .;
If( :Sensor != "Primary",
other = "Yes"
);
If( Row() == 1 | :ID != Lag( :ID ) | :"Sub-set"n != Lag( :"Sub-set"n ),
counter = 0;
withinStart = "No";
other = "Yes";
);
If(
:Sensor == "Primary" & withinStart == "Yes",
RCValue = "End";
withinStart = "No";
other = "No";,
:Sensor == "Primary" & Lag( :Sensor, -1 ) != "Primary" & withinStart == "No" & other == "Yes" & Row() !=
N Rows( Current Data Table() ),
withinStart = "Yes";
counter = counter + 1;
RCValue = "Start";
);
If( withinStart == "Yes" | RCValue == "End",
:Required Column 1[Row()] = counter
);
RCValue;
Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnessalut @txnelson ,
Cela a presque fonctionné avec quelques fausses entrées. Je crois que nous devons ajouter une condition supplémentaire sur la colonne :Occurrence. C'est :Occurrence doit changer pour définir :Required Column 2 == "Démarrer" (et peut être une option - cela devrait être le même lorsque :Required Column 2 == "End").
Quelque chose comme - Dif(:Occurrence) !=0 alors seulement :Required Column 2 == "Start"
Pour mes exemples de données (95 lignes), votre formule convenait bien, mais mes données réelles, qui contiennent plus de 300 000 lignes, donnent de nombreuses entrées erronées comme ci-dessous - (je pense que cela devrait aller une fois que l'exigence supplémentaire sur : Occurrence sera ajoutée. ) Ceci n'est qu'une capture d'écran de la mauvaise entrée.

Avec un peu de chance!!Je peux modifier la formule/le code et ajouter l'exigence de :Occurrence. en plus de ta formule.
Merci encore pour votre soutien.
Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnessalut @txnelson et tout,
J'ai pu modifier votre code parfaitement en fonction de mes besoins. Mais lors du dépannage de la 2ème étape, j'ai besoin de quelque chose comme ça --
Mark :Sensor = "Primary" (1er) autour d'un changement consécutif dans :Occurrence.Dans la capture d'écran donnée -
valeurs requises entre --- Dernier "Primaire" dans Occurrence = 2 et Première "Primaire" dans Occurrence = 3 [changement consécutif d'occurrence]
Trouver le premier primaire n'est pas si difficile, vous ne savez pas comment trouver le dernier primaire ? En pensant d'une manière ou d'une autre à inverser (ordre décroissant) les données du sous-ensemble pour Occurrence = 2, recherchez la valeur, puis rétablissez-la. Impossible de mettre une formule !! Une autre façon de faire ça ?
De l'aide?
Merci.

Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnesVous avez modifié le code que j'ai fourni précédemment pour obtenir les résultats que vous fournissez dans votre réponse la plus récente. Veuillez fournir la JSL que vous utilisez pour obtenir les résultats que vous affichez dans votre exemple de tableau de données.
Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnessalut @txnelson , Merci pour votre réponse.
Je ne parviens pas à obtenir le point de départ correct (exigence mise à jour). Dans le tableau de données ("Sample Data Updated") et l'image, j'avais entré manuellement les colonnes de données corrigées.
La formule. J'avais l'habitude d'obtenir "Required Column 1 Old" et "Required Column 2 Old" est-ce (c'est comme vous me le donnez, j'ai ajouté une condition d'occurrence dessus) -
RCValue = "";
:Required Column 1[Row()] = .;
If( :Occurrence != Lag( Occurrence, -1 ),
other = "Yes"
);
If( Row() == 1 | :ID != Lag( :ID ) | :"Sub-set"n != Lag( :"Sub-set"n ),
counter = 0;
withinStart = "No";
other = "Yes";
);
If(
:Sensor == "Primary" & :Occurrence == Lag( :Occurrence, -1 ) & Dif( :Occurrence ) == 0 &
withinStart == "Yes",
RCValue = "End";
withinStart = "No";
other = "No";,
:Occurrence != Lag( Occurrence, -1 ) & Lag( :Sensor, -1 ) != "Primary" & withinStart == "No"
& other == "Yes" & Row() != N Rows( Current Data Table() ),
withinStart = "Yes";
counter = counter + 1;
RCValue = "Start";
);
If( withinStart == "Yes" | RCValue == "End",
:Required Column 1[Row()] = counter
);
RCValue;

Merci beaucoup.
Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnesje suis confus.D'après ce que je peux voir, le script que j'ai écrit semble fonctionner, sauf qu'après la ligne 44 de la table de données, vous avez modifié les règles et souhaitez maintenant que la fin soit sur la ligne précédant la valeur suivante de Primary.Qu'est-ce que tu veux?

Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnesSalut Jim,
Désolé pour la confusion.
Votre formule d'origine (je crois que je ne l'ai pas gâchée) a fonctionné dans la plupart des cas, mais a également capturé quelques points erronés et en a manqué quelques-uns sur un ensemble complet de données. Dans le sous-ensemble de données joint (uniquement pour un "ID" et une valeur de "Sous-ensemble"), il y a une colonne basée sur votre formule qui a peu de points erronés.
Rangs : 647-649 mauvaise entrée (couleur rouge)
Lignes : 868-937 non capturées (couleur rouge)
Lignes : 1307-1311 entrée erronée (couleur rouge)
Et cela a été corrigé lorsque j'ai mis la condition sur :Occurrence.
Maintenant je cherche -
1. Dernier capteur principal en occurrence = n (disons n = 2), marquez-le comme "Démarrer"
2. Premier capteur primaire de l'occurrence = n+1 (= 3), et s'il n'y a pas de capteur primaire pour n = 3, il doit marquer/marcher la valeur de l'occurrence = n+2 == 4. Marquez-le comme "Fin"
3. Et enfin, remplissez les nombres entre "Début" et "Fin" dans une nouvelle colonne.
Autre façon de penser (peut-être) --
Si nous pouvons marquer - dans une seule occurrence n (n = 2) Premier capteur principal comme FIN et dans le dernier capteur principal comme Début, puis remplissez une valeur entre Début et Fin dans une nouvelle colonne.
J'espère que cela aidera et clarifiera les choses.
Merci,
Je pense que cela peut être, si je peux trouver un
Re : Vous cherchez à générer deux colonnes basées sur un modèle d'autres colonnesLe problème semble être lié à la logique appliquée à la variable JSL « autre ».Je n'ai pas le temps de travailler sur la question aujourd'hui, mais demain après-midi, je devrais pouvoir faire une enquête.