Importar hojas de Excel con contenido de celdas envueltasHola,
Aunque sé que es mejor evitar celdas envueltas en Excel para Analysis, tengo un cliente que tiene este tipo de datos. La importación con el asistente de importación de Excel también importa las celdas ajustadas, aunque tendría que abarcar las filas más grandes para ver todas las entradas. Estas columnas son caracteres y nominales por defecto. Sin embargo, no se pudo utilizar para el análisis. Imagine que la primera columna tiene varios países en una celda (DE, US, ES), la segunda columna tiene en una celda los valores numéricos relacionados (por ejemplo, puntajes como 10, 15, 7). Eso significa que la puntuación para Alemania es 10, para EE. UU. 15 y ES 7.
¿Cómo lidiar con ese tipo de datos? ¿Hay alguna manera de importarlo en líneas separadas?
(Esta es solo una versión simplificada de los datos, puede pensar en variables adicionales y variables de agrupación como estudio / proyecto, etc., donde una de estas celdas pertenece a uno de los estudios cada una).
Lo que he probado hasta ahora:
Para usar estos datos en JMP, puede usar una variable de respuesta múltiple y establecer la propiedad "Respuesta múltiple" en un delimitador "", porque un ajuste no tiene un delimitador como "," o ";". Hasta ahora todo bien, pero los datos ahora se analizan por frecuencias en lugar de valores numéricos. Por lo tanto, no se pueden utilizar muchos métodos de análisis.
El apilamiento, la división y otras manipulaciones de la tabla no funcionaron para mí, ya que no representan una columna de respuesta múltiple y ponen toda la entrada como un valor. Expandirme a columnas tampoco tuve éxito, aunque es posible que no haya encontrado el truco. Sin embargo, esto parece tener muchos pasos involucrados para una buena solución, pero es mejor cualquier solución que ninguna 
Supongo que la mejor solución es proporcionar los datos en una estructura / formato diferente en Excel ya. ¿O tienes alguna otra sugerencia?
Adjunto el archivo de Excel y un script para importar y cambiar el tipo de modelado a Respuesta múltiple.
Gracias,
Martín
Re: Importar hojas de Excel con contenido de celdas envueltasHola Brady, muchas gracias! Recomiendo encarecidamente al cliente que cambie el formato en la fuente, ya que esto es posible de manejar con JSL, pero podría ser aún más engorroso si hay más columnas además de las que hay que ocuparse.
La opción de apilar con series contiguas y múltiples ahora también es más clara para mí.
Gracias,
Martín
Re: Importar hojas de Excel con contenido de celdas envueltasEstos datos son realmente feos debido al ajuste. A ver si esto funciona; Parece que funciona para mí.
Las ideas principales son:
Contraiga el espacio en blanco, reemplace las nuevas líneas con comas, texto en columnas, pila de series múltiples contiguas.
Además, hay algunas operaciones de limpieza como eliminaciones de columnas, eliminaciones de filas vacías y conversiones de tipos.
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>Re: Importar hojas de Excel con contenido de celdas envueltasHmm, buena idea, pero no puedo usarlo, ya que pide que se apilen 2 columnas, pero solo puedo seleccionar una. Adjunto una tabla de ejemplo, ¿puedo usarla mal?
Corrección, puedo usarlo si cambio el delimitador en la tabla a "," con
For Each Row(
new1 = Substitute( Column( 1 )[], "\!n", "," );
Column( 1 )[] = new1;
);
For Each Row(
new2 = Substitute( Column( 2 )[], "\!n", "," );
Column( 2 )[] = new2;
);
Sin embargo, todavía no parece que esperaría que fuera la mesa final, que es algo así como:
|
CARNÉ DE IDENTIDAD
|
País
|
DATOS
|
|
1
|
Delaware
|
10
|
|
1
|
Arg.
|
15
|
|
1
|
Estados Unidos
|
13
|
| 2 |
Delaware |
10 |
Re: Importar hojas de Excel con contenido de celdas envueltasEl uso de la idea de Columna de respuesta múltiple que propuso lo coloca en una excelente posición para usar @brady_brady Complemento de herramientas de tabla de datos. Hay una utilidad allí que le permitirá convertir de ida y vuelta entre Respuesta múltiple y Apilada. Una vez que está apilado, puede simplemente cambiar el modelado y los tipos de datos a lo que sea apropiado para los datos.
Mejor,
METRO