Importazione di fogli Excel con contenuto di celle avvolteCiao,
anche se so che è meglio evitare le celle avvolte in Excel per l'analisi, ho un cliente che ha questo tipo di dati. L'importazione con la procedura guidata di importazione Excel importa anche le celle avvolte, anche se dovresti allargare le righe più grandi per vedere tutte le voci. Queste colonne sono di carattere e nominali per impostazione predefinita. Tuttavia, non è stato possibile utilizzarlo per l'analisi. Immagina che la prima colonna abbia più paesi in una cella (DE, US, ES), la seconda colonna abbia in una cella i relativi valori numerici (ad esempio punteggi come 10, 15, 7). Ciò significa che il punteggio per la Germania è 10, per gli Stati Uniti 15 e ES 7.
Come gestire quel tipo di dati? Esiste un modo per importarlo in linee separate?
(Questa è solo una versione semplificata dei dati, puoi pensare a variabili aggiuntive e variabili di raggruppamento come studio / progetto e così via dove una di queste celle appartiene a uno degli studi ciascuna.)
Quello che ho provato finora:
Per utilizzare questi dati in JMP è possibile utilizzare una variabile a risposta multipla e impostare la proprietà "Risposta multipla" su un delimitatore "", poiché un wrapping non ha un delimitatore come "," o ";". Fin qui tutto bene, ma i dati sono ora analizzati da frequenze piuttosto che da valori numerici. Quindi un sacco di metodi di analisi non possono essere utilizzati.
Stacking, Split e altre manipolazioni della tabella non hanno funzionato per me in quanto non tengono conto di una colonna a risposta multipla e mettono l'intera voce come un valore. Anche l'espansione in colonne non ha avuto successo, anche se potrei non aver trovato il trucco. Tuttavia, questo sembra avere già molti passaggi necessari per una buona soluzione, ma meglio qualsiasi soluzione che nessuna 
Immagino che la soluzione migliore sia già quella di fornire i dati in una diversa struttura / formato in Excel. O hai qualche altro suggerimento?
In allegato il file Excel e uno script per importare e modificare il tipo di modellazione in Risposta multipla.
Grazie,
balestruccio
Ri: Importazione di fogli Excel con contenuto di celle avvolteCiao Brady, grazie mille! Consiglio vivamente al cliente di cambiare il formato nel sorgente, poiché è possibile gestirlo con JSL ma potrebbe diventare ancora più ingombrante se ci sono più colonne in più di cui bisogna occuparsi.
L'opzione stack con serie contigue e multiple ora è anche più chiara per me.
Grazie,
balestruccio
Ri: Importazione di fogli Excel con contenuto di celle avvolteQuesti dati sono davvero brutti a causa del wrapping. Vedi se funziona; sembra funzionare per me.
Le idee principali sono:
Comprimi spazi bianchi, sostituisci nuove righe con virgole, testo in colonne, stack contiguo di più serie.
Inoltre, ci sono alcune operazioni di pulizia come eliminazioni di colonne, eliminazioni di righe vuote e conversioni di tipi.
Names Default To Here(1);
dt = Open(pickfile(),
Worksheets( "Sheet1" ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
)
);
dt << new column("C2", formula(collapse whitespace(substitute(:Country, "\!n",","))));
dt << new column("D2", formula(collapse whitespace(substitute(:Data, "\!n",","))));
dt << select columns({"C2", "D2"});
dt << text to columns(delimiter(","));
dt << Delete Columns;
dt << Delete Columns (1,2);
collist = dt << get column names(string);
colExpr = insert(expr(columns()), colList);
stackExpr = Expr(
dtStack = dt << Stack(
_CCC_,
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 2 ),
Contiguous
)
);
substituteInto(stackExpr, expr(_CCC_), nameexpr(colExpr));
stackExpr;
dtStack << delete Columns (1,3);
dtStack << select where (:Data == "") << delete rows();
close(dt, nosave);
column(dtStack,1)<<SET name=""></SET>Ri: Importazione di fogli Excel con contenuto di celle avvolteHmm, buona idea, ma non posso usarlo in quanto richiede l'accatastamento di 2 colonne ma posso selezionarne solo una. In allegato una tabella di esempio, posso semplicemente usarlo nel modo sbagliato.
Correzione, posso usarlo se cambio il delimitatore nella tabella in "," con
For Each Row(
new1 = Substitute( Column( 1 )[], "\!n", "," );
Column( 1 )[] = new1;
);
For Each Row(
new2 = Substitute( Column( 2 )[], "\!n", "," );
Column( 2 )[] = new2;
);
Tuttavia, non sembra ancora che mi aspetto il tavolo finale, che è qualcosa del tipo:
|
ID
|
Nazione
|
DATI
|
|
1
|
DE
|
10
|
|
1
|
Arg.
|
15
|
|
1
|
Stati Uniti d'America
|
13
|
| 2 |
DE |
10 |
Ri: Importazione di fogli Excel con contenuto di celle avvolteL'utilizzo dell'idea della colonna a risposta multipla che hai proposto ti mette in un'ottima posizione da utilizzare @brady_brady Componente aggiuntivo Strumenti tabella dati. C'è un'utilità lì dentro che ti permetterà di convertire avanti e indietro tra risposta multipla e in pila. Una volta che è impilato, puoi semplicemente modificare la modellazione e i tipi di dati in ciò che è appropriato per i dati.
Migliore,
M