Formule condizionali e testo libero nella stessa colonnaSto creando un modello di tabella dati che deve essere utilizzato da altri e inviato a me. In alcuni casi, i dati in ColB sono una funzione di ColA, ma ci sono condizioni in cui ciò non è vero. Mi piacerebbe semplificare la vita al mittente, quando possibile, popolando automaticamente ColB (utilizzando una formula) una volta inserito ColA, ma consentire comunque loro di inserire una stringa personalizzata in ColB se la loro voce ColA non si adatta alla relazione predefinita . C'è un modo per raggiungere questo obiettivo? Speravo ingenuamente che lasciare vuota la condizione "else" nella mia dichiarazione if potesse abilitarlo, ma mi sbagliavo.
Bonus: sarebbe ancora meglio se potessi utilizzare List Checks oltre a tutte queste funzionalità (poiché esiste ancora solo un elenco di valori accettabili per ColB), ma JMP ha già generato errori che mi dicono che non posso aggiungere una formula in cima a un controllo elenco (che immagino abbia senso dato che una formula e un testo libero non possono coesistere).
Ho la sensazione che sto cercando di fare troppo con un semplice tavolo e probabilmente avrò bisogno di un modulo di input più elaborato per farcela. Ma volevo solo controllare prima di intraprendere quella strada. Grazie in anticipo.
Re: Formule condizionali e testo libero nella stessa colonnaAh! Capisco! Inserisci la formula "colore" nella colonna "Materiale 2" ma applicala alla colonna "Materiale (se necessario)" che ha il controllo dell'elenco. Molto meglio! Stavo cercando di inserire la formula nella colonna "Materiale (se necessario)". Grandi cose!
Re: Formule condizionali e testo libero nella stessa colonnaSì, puoi colorare la cella dell'altra colonna. La formula è un po' più complicata e devi sia aggiungere il colore quando necessario sia rimuoverlo (nel caso sia stato aggiunto prima) quando non lo è.
Match( :Furniture Type,
"Bed",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Chair", "Wood",
"Sofa",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Table", "Metal"
)Re: Formule condizionali e testo libero nella stessa colonnaGrazie, @Peter_Hersh ! Scusa, ho faticato a spiegarlo molto bene. Penso che la proposta di Jeff dovrebbe funzionare comunque. Apprezzo molto il vostro input!
Re: Formule condizionali e testo libero nella stessa colonnaGrazie, @Jeff_Perkinson ! Penso che questa sia un'implementazione decente in quanto le istruzioni verranno popolate automaticamente mentre l'utente compila il contenuto da sinistra a destra per una determinata riga. Avrei dovuto pensare a costruire le istruzioni in una formula.
Se è possibile colorare automaticamente le celle nella colonna "Materiale (se necessario)" in base ai valori nella colonna "Materiale 2" sarei tutto orecchie. Ho provato a implementarlo con una formula ma non sono riuscito a mantenere il controllo dell'elenco nella colonna "Materiale (se necessario)". In questo modo potrei semplicemente usare un indicatore di colore per una cella che deve essere compilata e nascondere completamente la colonna "Materiale 2" dall'inputter (poiché non hanno bisogno di vedere l'output "Materiale 2").
Re: Formule condizionali e testo libero nella stessa colonnaGrazie, @DonMcCormack ! Sì, Row States è stato nella mia lista di cose da imparare. Grazie per avermeli indicati. Lo esaminerò.
Re: Formule condizionali e testo libero nella stessa colonna@Matt_Converse , Penso che il modo in cui lo gestirei sia con due colonne che l'utente deve riempire, una per (usando il tuo esempio sopra) Tipo di mobile e un'altra per Materiale e poi la tua colonna formula userebbe la tua ricerca per quei Tipi di mobili che conosci, e la colonna Materiale per quelli che non lo fai.
Nella tua formula puoi verificare se la colonna Materiale (se necessario) è riempita o meno e avvisare l'utente che deve riempirla. È inoltre possibile utilizzare una proprietà Verifica elenco nella colonna Materiale.

Re: Formule condizionali e testo libero nella stessa colonnaCiao Matt,
Potrebbe avere senso fare una telefonata veloce. Potrei non comprendere appieno ciò che stai tentando di realizzare.Sentiti libero di contattarmi a peter.hersh@jmp.com
Puoi facilmente creare un singolo script che creerà tutte queste relazioni da colonna a colonna contemporaneamente.A meno che non ci sia qualche motivo per cui questo debba essere fatto.
Re: Formule condizionali e testo libero nella stessa colonna@Matt_Converse potresti dare un'occhiata all'utilizzo di Row State Handler insieme a una funzione che controlla e aggiorna la colonna di interesse. Sarebbe un po' complicato poiché Row State Handler viene eseguito ogni volta che c'è un cambiamento nello stato di una riga, passando i numeri di riga delle righe selezionate e non selezionate. Probabilmente dovresti aggiungere condizioni per assicurarti che la funzione sia stata eseguita solo in determinate circostanze (ad esempio, se il valore nella colonna di destinazione è cambiato). Il vantaggio è che eviteresti di dover utilizzare una funzione o un valore che controlla la colonna di destinazione. Consulta lo Scripting Index e la documentazione per gli esempi.
Re: Formule condizionali e testo libero nella stessa colonnaGrazie, @Peter_Hersh ! Non avevo pensato di usare recode. Prevedo alcune sfide, tuttavia, poiché il mio set di dati (e il flusso di lavoro del "cliente") è più complesso di quanto ho accennato:
1. Viene inserita un'intera riga di dati prima che venga aggiunta una seconda riga. Pertanto, lo script (sebbene un semplice pulsante di riproduzione) dovrebbe essere eseguito per ogni riga e dovrò aggiungere alcune righe per evitare che sovrascriva il testo senza punto interrogativo inserito in precedenza (cosa che immagino sia fattibile).
2. Esistono più relazioni da colonna a colonna in cui vorrei sfruttare questa funzione (ad esempio, tra ColA e ColB, nonché tra ColC e ColF e così via), quindi l'utente dovrà eseguire lo script più volte volte per una determinata riga, nonché noto quando riprodurre la sceneggiatura, ecc., Il che sembra un po 'goffo. In alternativa, potrei riorganizzare le colonne (ColA, ColC, ColB, ecc.) o chiedere all'utente di passare da ColA a ColC, ecc. in modo che lo script possa essere eseguito solo una volta per riga, ma anche queste opzioni non sembrano molto intuitive .
Se pensi che "ricodifica" sia la soluzione migliore, probabilmente ci proverò. Grazie per il tuo contributo!
Re: Formule condizionali e testo libero nella stessa colonna@Matt_Converse Hai provato ad usare Recode?Nel tuo esempio, una sedia sarebbe di legno e il letto sarebbe vuoto.È possibile eseguire uno script rapido per eseguire questa ricodifica, quindi aggiungere una proprietà di controllo dell'elenco.Il controllo dell'elenco consentirà all'utente di fare clic con il pulsante destro del mouse e selezionare uno dei valori nell'elenco.Se utilizzi il registro in JMP 16, acquisirà tutte queste modifiche, quindi non è necessario eseguire lo script.Prova questo qui sotto.
//Make Data Table
New Table( "Example 2",
Add Rows( 7 ),
New Column( "Furniture",
Character,
"Nominal",
Set Values( {"Chair", "Bed", "Chair", "Bed", "Stool", "Stool", "Bed"} )
)
);
Wait (2);
// Recode column: Material
dt = Data Table( "Example 2" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Furniture );
col1 << Set Name( "Material" );
dt << Move Selected Columns( {col1}, after( dt:Furniture ) );
dt << Recode Column(
dt:Furniture,
{Map Value(
_rcOrig,
{"Bed", "?", "Chair", "Wood", "Stool", "Metal"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
// Clear row selection
Data Table( "Example 2" ) << Clear Select;
// Change column list check: Material
Data Table( "Example 2" ):Material << List Check( {"?", "Metal", "Wood"} );
Re: Formule condizionali e testo libero nella stessa colonnaGrazie per la pronta risposta, Pietro. Ho imparato qualcosa in più sulle etichette dei valori guardandolo. Tuttavia, a meno che non mi manchi qualcosa, ColB è ancora una funzione di ColA. Avrò bisogno dell'opzione per ColB per essere indipendente da ColA nei casi in cui ColB ha una relazione uno-a-molti con ColA.
Quindi, ad esempio, diciamo che ColA è "Tipo di mobili" e ColB è "Di che materiale sono fatti i mobili?". Se l'utente inserisce "Chair" in ColA, ColB si popola automaticamente con "Wood" perché so a priori che le uniche sedie che avrebbero sarebbero state fatte di legno. Ma se hanno inserito "Bed" in ColB, ColB viene lasciato vuoto perché possano essere compilati con "Wood" o "Metal" perché potrebbero avere entrambi i tipi. In alternativa, ColB potrebbe diventare disattivato se mettono "Chair" in ColA (poiché so già cosa dovrebbe essere ColB e sto solo cercando di fargli risparmiare tempo ed evitare errori di battitura), ma non sono riuscito a farlo funzionare da allora Ho anche eseguito quell'operazione con una formula.
Spero che questo sia un po' più chiaro. Grazie!
Re: Formule condizionali e testo libero nella stessa colonna@Matt_Converse , Buona domanda.Ecco un esempio di qualcosa di simile a quello che hai chiesto.Ho usato le etichette dei valori in cui puoi includere un intervallo.Se questo valore rientra in un intervallo specifico, verrà visualizzato come etichetta.Questo potrebbe realizzare ciò che speri o almeno in parte.È possibile eseguire il controllo dell'elenco su Col A poiché è indipendente e se non rientra nell'intervallo desiderato potrebbe funzionare anche.Comunque dai un'occhiata fammi sapere se hai qualche domanda.