Cercando di generare due colonne in base a uno schema da altre colonneCiao a tutti,
Sto cercando di generare due nuove colonne basate su modelli in altre due colonne ("Colonna richiesta1" e "Colonna richiesta2"). Si prega di vedere l'immagine allegata -

Qualche aiuto/suggerimento?
Grazie.
ScriptingRe: Cercare di generare due colonne in base a uno schema da altre colonneEcco una formula per la colonna a cui fai riferimento Colonna richiesta 2.Quando studi il codice, vedrai che tutto ciò che sta facendo è applicare le regole logiche che hai dichiarato che devono essere controllate quando si determinano i valori di inizio e fine.Contiene anche l'impostazione del valore per la colonna Colonna richiesta 1. Per eseguire questa formula, creare semplicemente la Colonna richiesta 1 e la Colonna richiesta 2. Impostare la Colonna richiesta 2 come colonna di caratteri.Quindi apri la formula per la colonna obbligatoria 2 e copia la formula di seguito nella colonna.

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: Cercare di generare due colonne in base a uno schema da altre colonneCiao @txnelson ,
Ha funzionato quasi con poche voci false. Credo che dobbiamo aggiungere una condizione extra sulla colonna: occorrenza. Cioè: occorre cambiare per impostare: Colonna richiesta 2 == "Inizio" (e potrebbe essere un'opzione - dovrebbe essere lo stesso quando: Colonna richiesta 2 == "Fine").
Qualcosa come - Dif(:Occurrence) !=0 then only :Required Column 2 == "Start"
Per i miei dati di esempio (95 righe) andava bene con la tua formula, ma i miei dati effettivi che hanno più di 300k righe, stanno dando molte voci errate come di seguito - (penso che dovrebbe andare bene una volta che verrà aggiunto un requisito aggiuntivo su: occorrenza. ) Questo è solo uno screenshot della voce sbagliata.

Fiduciosamente!!Posso modificare la formula/codice e posso aggiungere il requisito di :Occurrence. sopra la tua formula
Grazie ancora per il vostro sostegno.
Re: Cercare di generare due colonne in base a uno schema da altre colonneCiao @txnelson e tutto,
Sono stato in grado di modificare il tuo codice in base perfettamente alle mie esigenze. Ma nella seconda fase della risoluzione dei problemi ho bisogno di qualcosa del genere:
Contrassegno :Sensore = "Primario" (1°) intorno al cambiamento consecutivo in :Occurrence.Nello screenshot fornito -
valori richiesti intermedi --- Ultima "primaria" in Occorrenza = 2 e Prima "primaria" in Occorrenza = 3 [cambiamento consecutivo nell'occorrenza]
Trovare la prima primaria non è così difficile, non sai come trovare l'ultima primaria? Pensando di invertire in qualche modo (ordine decrescente) i dati del sottoinsieme per Occorrenza = 2, trovare il valore e quindi ripristinarlo. Non riesco a inserire una formula!! Qualche altro modo per farlo?
Qualsiasi aiuto?
Grazie.

Re: Cercare di generare due colonne in base a uno schema da altre colonneHai modificato il codice che ti ho fornito in precedenza per ottenere i risultati che fornisci nella tua risposta più recente. Fornisci il JSL che stai utilizzando per ottenere i risultati che stai mostrando nella tabella dei dati di esempio.
Re: Cercare di generare due colonne in base a uno schema da altre colonneCiao @txnelson , Grazie per la risposta.
Non sono in grado di ottenere il punto di inizio corretto (requisito aggiornato). Nella tabella dei dati ("Dati di esempio aggiornati") e nell'immagine, avevo inserito manualmente le colonne dei dati corretti.
La formula. Ho usato per ottenere "Colonna richiesta 1 vecchia" e "Colonna richiesta 2 vecchia" è questo (è proprio come mi dai, ho aggiunto la condizione di occorrenza su di esso) -
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;

Grazie molto.
Re: Cercare di generare due colonne in base a uno schema da altre colonnesono confuso.Da quello che posso vedere, lo script che ho scritto sembra funzionare, tranne per il fatto che dopo la riga 44 nella tabella dei dati, hai modificato le regole e ora vuoi che End si trovi sulla riga prima del valore successivo di Primary.Qual è quello che vuoi?

Re: Cercare di generare due colonne in base a uno schema da altre colonneciao Jim,
Dispiace per la confusione.
La tua formula originale (credo, non l'ho incasinata) ha funzionato per la maggior parte dei casi, ma ha anche catturato alcuni punti sbagliati e ne ha persi alcuni sull'intero set di dati. Nel sottoinsieme allegato dei dati (solo per un "ID" e un valore di "Sottoinsieme") c'è una colonna basata sulla tua formula che ha pochi punti sbagliati.
Righe: 647-649 inserimento errato (colore rosso)
Righe: 868-937 non catturate (colore rosso)
Righe: 1307-1311 inserimento errato (colore rosso)
E questo è stato risolto quando ho messo la condizione su :Occurrence.
Ora sto cercando -
1. Ultimo sensore primario in occorrenza = n (diciamo n = 2), contrassegnalo come "Avvio"
2. Primo sensore primario in occorrenza = n+1 (= 3), e se non c'è un sensore primario per n = 3, dovrebbe fermare/segnare il valore in occorrenza = n+2 == 4. Contrassegna come "Fine"
3. Infine, riempi i numeri tra "Inizio" e "Fine" in una nuova colonna.
Un modo alternativo di pensare (potrebbe essere) --
Se possiamo contrassegnare - in ogni singola occorrenza n (n = 2) Primo sensore primario come FINE e nell'ultimo sensore primario come Inizio e quindi riempire un valore tra Inizio e Fine in una nuova colonna.
Spero che questo aiuti e chiarisca le cose.
Grazie,
Penso che questo possa essere, se riesco a trovare un
Re: Cercare di generare due colonne in base a uno schema da altre colonneIl problema sembra riguardare la logica applicata alla variabile JSL "altro".Non ho tempo per lavorare sulla questione oggi, ma domani pomeriggio dovrei essere in grado di fare qualche indagine.