Importation de feuilles Excel avec contenu de cellules encapsuléesSalut,
Bien que je sache qu'il vaut mieux éviter les cellules encapsulées dans Excel pour l'analyse, j'ai un client qui dispose de ce type de données. L'importation à l'aide de l'assistant d'importation Excel importe également les cellules encapsulées, bien que vous deviez étendre les rangées plus grandes pour voir toutes les entrées. Ces colonnes sont de caractère et nominales par défaut. Cependant, ne peut pas être utilisé pour l'analyse. Imaginez que la première colonne ait plusieurs pays dans une cellule (DE, US, ES), la deuxième colonne contient les valeurs numériques correspondantes (par exemple, des scores tels que 10, 15, 7). Cela signifie que le score pour l'Allemagne est de 10, pour US 15 et ES 7.
Comment gérer ce type de données? Y a-t-il un moyen de l'importer dans des lignes séparées?
(Ceci est juste une version simplifiée des données, vous pouvez penser à des variables supplémentaires et à des variables de regroupement telles que study / project et ainsi de suite, où l'une de ces cellules appartient à l'une des études.)
Ce que j'ai essayé jusqu'à présent:
Pour utiliser ces données dans JMP, vous pouvez utiliser une variable à réponses multiples et définir la propriété "Réponses multiples" sur un délimiteur "", car un bouclage n'a pas de délimiteur sous la forme "," ou ";". Jusqu'ici tout va bien, mais les données sont maintenant analysées par fréquences plutôt que par valeurs numériques. Donc, un tas de méthodes d'analyse ne peut pas être utilisé.
L'empilement, le fractionnement et d'autres manipulations de table ne m'ont pas fonctionné car ils ne tenaient pas compte d'une colonne à réponses multiples et mettaient l'entrée entière comme une seule valeur. Élargir aux colonnes, je n’étais pas non plus un succès, bien que je n’aie peut-être pas trouvé l’astuce. Cependant, il semble que de nombreuses étapes soient déjà nécessaires pour trouver une solution intéressante, mais il vaut mieux une solution que rien du tout 
Je suppose que la meilleure solution consiste à fournir déjà les données dans une structure / un format différent dans Excel. Ou avez-vous une autre suggestion?
Joignez le fichier Excel et un script pour importer et modifier le type de modélisation en Réponse multiple.
Merci,
Martin
Re: Importer des feuilles Excel avec un contenu de cellules encapsuléesBonjour Brady, merci beaucoup! Je recommande fortement au client de changer le format dans le source, car cela est possible avec JSL mais peut devenir encore plus encombrant s'il y a plus de colonnes en plus, il faut en prendre soin.
L'option de pile avec des séries contiguës et multiples est également plus claire pour moi.
Merci,
Martin
Re: Importer des feuilles Excel avec un contenu de cellules encapsuléesCes données sont vraiment laides à cause de l'emballage. Voir si cela fonctionne; Il semble fonctionner pour moi.
Les idées principales sont:
Réduire les blancs, remplacer les nouvelles lignes par des virgules, le texte en colonnes, une pile contiguë de plusieurs séries.
En outre, il existe quelques opérations de nettoyage telles que la suppression de colonnes, la suppression de lignes vides et les conversions de types.
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: Importer des feuilles Excel avec un contenu de cellules encapsuléesHmm, bonne idée, mais je ne peux pas l'utiliser car il demande d'empiler 2 colonnes mais je ne peux en sélectionner qu'une. Ci-joint un exemple de tableau, puis-je l'utiliser simplement de manière erronée?
Correction, je peux l’utiliser si je change le délimiteur du tableau en "," avec
For Each Row(
new1 = Substitute( Column( 1 )[], "\!n", "," );
Column( 1 )[] = new1;
);
For Each Row(
new2 = Substitute( Column( 2 )[], "\!n", "," );
Column( 2 )[] = new2;
);
Cependant, cela ne ressemble toujours pas à la table finale, qui ressemble à quelque chose comme:
|
ID
|
Pays
|
LES DONNÉES
|
|
1
|
DE
|
dix
|
|
1
|
Arg.
|
15
|
|
1
|
Etats-Unis
|
13
|
| 2 |
DE |
dix |
Re: Importer des feuilles Excel avec un contenu de cellules encapsuléesEn utilisant l’idée de colonne à réponses multiples que vous avez proposée, vous êtes bien placé pour utiliser @brady_brady Complément Outils de la table de données. Il y a un utilitaire qui vous permettra de convertir entre Réponse multiple et Empilé. Une fois que cela est empilé, vous pouvez simplement changer la modélisation et les types de données en fonction de ce qui est approprié pour les données.
Meilleur,
M