Bonjour, je souhaite convertir les données transactionnelles ci-dessous en une matrice pour compter la fréquence des DIFFÉRENTS jours où le client a passé des commandes.
J'essaie essentiellement de comprendre, sur la base de données transactionnelles pendant 2 ans. Combien de jours différents un ID client a effectué des achats.
Par exemple, l'ID client 17850 a fréquence de 1 dans l'ensemble de données ci-dessous (il a acheté différents articles au cours de cette journée, comme vous pouvez le voir dans les données transactionnelles).
J'essaie TABULATE, mais je ne sais pas comment trouver des lignes d'ID client uniques et la fréquence (basée sur des jours uniques).
Exemple de résultat de tabulation (basé sur des dates uniques, pas sur des LIGNES !) :
| N ° de client | Fréquence |
| 17850 | 45 |
| 13047 | 30 |
| … | … |
PS : je joins l'excel avec les données transactionnelles
| Numéro de facture | StockCode | Description | Quantité | Date de facturation | Prix unitaire | N ° de client | Pays |
| 536365 | 85123A | PORTE-LAMPE EN T CŒUR SUSPENDU BLANC | 6 | 12/01/2010 8:26 | 2,55 | 17850 | Royaume-Uni |
| 536365 | 71053 | LANTERNE EN METAL BLANC | 6 | 12/01/2010 8:26 | 3.39 | 17850 | Royaume-Uni |
| 536365 | 84406B | PORTE-MANTEAU CRÈME COEURS CUPIDON | 8 | 12/01/2010 8:26 | 2,75 | 17850 | Royaume-Uni |
| 536365 | 84029G | CHAUFFE-EAU TRICOT UNION FLAG | 6 | 12/01/2010 8:26 | 3.39 | 17850 | Royaume-Uni |
| 536365 | 84029E | COEUR BLANC EN LAINE ROUGE. | 6 | 12/01/2010 8:26 | 3.39 | 17850 | Royaume-Uni |
| 536365 | 22752 | SET 7 NICHOIRS BABUSHKA | 2 | 12/01/2010 8:26 | 7,65 | 17850 | Royaume-Uni |
| 536365 | 21730 | PORTE-LAMPE EN T DÉPOLI ÉTOILE DE VERRE | 6 | 12/01/2010 8:26 | 4.25 | 17850 | Royaume-Uni |
| 536366 | 22633 | CHAUFFE-MAINS UNION JACK | 6 | 12/01/2010 8:28 | 1,85 | 17850 | Royaume-Uni |
| 536366 | 22632 | CHAUFFE MAIN POIS ROUGE | 6 | 12/01/2010 8:28 | 1,85 | 17850 | Royaume-Uni |
| 536367 | 84879 | ORNEMENT D'OISEAU DE COULEURS ASSORTIES | 32 | 12/01/2010 8:34 | 1,69 | 13047 | Royaume-Uni |
| 536367 | 22745 | LA CHAMBRE DE LA MAISON DE JEU DE POPPY | 6 | 12/01/2010 8:34 | 2.1 | 13047 | Royaume-Uni |
| 536367 | 22748 | LA CUISINE DE LA MAISON DE JEU DE POPPY | 6 | 12/01/2010 8:34 | 2.1 | 13047 | Royaume-Uni |
| 536367 | 22749 | POUPEE FELTCRAFT PRINCESSE CHARLOTTE | 8 | 12/01/2010 8:34 | 3,75 | 13047 | Royaume-Uni |
| 536367 | 22310 | TASSE TRICOT IVOIRE COSY | 6 | 12/01/2010 8:34 | 1,65 | 13047 | Royaume-Uni |
| 536367 | 84969 | BOÎTE DE 6 CUILLÈRES À THÉ COULEURS ASSORTIES | 6 | 12/01/2010 8:34 | 4.25 | 13047 | Royaume-Uni |
| 536367 | 22623 | COFFRET DE BLOCS JIGSAW VINTAGE | 3 | 12/01/2010 8:34 | 4,95 | 13047 | Royaume-Uni |
| 536367 | 22622 | COFFRET DE BLOCS ALPHABET VINTAGE | 2 | 12/01/2010 8:34 | 9,95 | 13047 | Royaume-Uni |
| 536367 | 21754 | MOT DE BLOC DE CONSTRUCTION DE MAISON | 3 | 12/01/2010 8:34 | 5,95 | 13047 | Royaume-Uni |
| 536367 | 21755 | MOT DE BLOC DE CONSTRUCTION D'AMOUR | 3 | 12/01/2010 8:34 | 5,95 | 13047 | Royaume-Uni |
| 536367 | 21777 | BOÎTE À RECETTES AVEC CŒUR EN MÉTAL | 4 | 12/01/2010 8:34 | 7,95 | 13047 | Royaume-Uni |
| 536367 | 48187 | PAILLASSON NOUVELLE ANGLETERRE | 4 | 12/01/2010 8:34 | 7,95 | 13047 | Royaume-Uni |
| 536368 | 22960 | COFFRET A CONFITURE AVEC POT | 6 | 12/01/2010 8:34 | 4.25 | 13047 | Royaume-Uni |
| 536368 | 22913 | PORTE MANTEAU ROUGE PARIS MODE | 3 | 12/01/2010 8:34 | 4,95 | 13047 | Royaume-Uni |
| 536368 | 22912 | PORTE MANTEAU JAUNE PARIS MODE | 3 | 12/01/2010 8:34 | 4,95 | 13047 | Royaume-Uni |
| 536368 | 22914 | PORTE MANTEAU BLEU PARIS MODE | 3 | 12/01/2010 8:34 | 4,95 | 13047 | Royaume-Uni |
| 536369 | 21756 | MOT DE BLOC DE CONSTRUCTION DE BAIN | 3 | 12/01/2010 8:35 | 5,95 | 13047 | Royaume-Uni |
| 536370 | 22728 | REVEIL BAKELIKE ROSE | 24 | 12/01/2010 8:45 | 3,75 | 12583 | France |
| 536370 | 22727 | REVEIL BAKELIKE ROUGE | 24 | 12/01/2010 8:45 | 3,75 | 12583 | France |
| 536370 | 22726 | REVEIL BAKELIKE VERT | 12 | 12/01/2010 8:45 | 3,75 | 12583 | France |
| 536370 | 21724 | FEUILLE D'AUTOCOLLANTS PANDA ET LAPINS | 12 | 12/01/2010 8:45 | 0,85 | 12583 | France |
| 536370 | 21883 | RUBAN CADEAU ÉTOILES | 24 | 12/01/2010 8:45 | 0,65 | 12583 | France |
Une autre façon de faire cela.Tout d'abord, comme le dit Jim, changez l'ID client (soit en Nominal, soit en Ordinal).Créez une nouvelle colonne de date en remplaçant la date de facturation actuelle par une variable de caractère nominal.Créez une nouvelle colonne pour la date en utilisant la gauche (Date de facture, 10) - cela supprime l'heure.Utilisez ensuite Tabuler, avec l'ID client suivi de la nouvelle colonne de date (les deux sous forme de lignes).À la flèche rouge, transformer en tableau de données.
Ensuite, créez une nouvelle colonne avec la formule Numéro de colonne (date, par ID client).Cela donne le nombre de jours distincts pendant lesquels chaque client a passé des commandes.
La solution à votre question est très simple.Vous pouvez facilement le faire de manière interactive ou sous forme de script. Ces étapes se trouvent toutes dans la documentation d'introduction de JMP, que je vous suggère de prendre le temps de lire.Il vous donnera un bon aperçu des différents composants disponibles.
Aide==>Livres==>Utiliser JMP
Interactif:
1. Ouvrez le fichier Excel depuis JMP
Fichier==>Ouvrir
2. L'ID client s'ouvre sous la forme d'une colonne numérique/continue.Il doit s'agir d'une valeur ordinale.
3. La colonne InvoiceDate est formatée pour afficher également la partie horaire.Vous souhaitez traiter InvoiceDate comme des jours distincts, et non des heures dans les jours, alors modifiez l'ouverture des informations de colonne pour cette colonne et changez le format en "j/m/a"
4. Pour résumer les données sur une ligne par CustomerID/InvoiceDate, exécutez
Tableaux==>Résumé
Mettez CustomerID et InvoiceDate dans la sélection de groupe et cliquez sur OK
5. Maintenant, pour résumer jusqu'à une ligne par CustomerID, exécutez à nouveau la plate-forme de résumé, par rapport à la table nouvellement créée
Tableaux==>Résumé
Placer la colonne CustomerID dans la sélection de groupe et cliquer sur OK
Le tableau résultant contiendra les valeurs demandées
Le script ci-dessous a été essentiellement généré en exécutant les étapes ci-dessus de manière interactive, puis en enregistrant simplement les scripts pour chaque étape dans une fenêtre de script.Je n'ai écrit qu'une petite partie du code ci-dessous.JMP l'a généré.
names default to here(1);
// Open the Excel file
dt=Open(
// Change the below to the path to the Excel File
"<PATH to="" folder="">\Online Retail.xlsx");
// The CustomerID should not be treated as a continuous,
// analytical column of data, so
// Change CustomerID to an Ordinal Modeling Type
dt:CustomerID<<MODELING type="">Tabulate
// which will allow for the Calculation of the
// counts of the number of different InvoiceDates
dtSum1 << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(
Column Table( Analysis Columns( :InvoiceDate ), Statistics( N ) ),
Row Table( Grouping Columns( :CustomerID ) )
)
);
// Or
// Run the Summary Platform again, but this time run it on
// the current Summarized data table to count the number of
// rows for each CustomerID
dtSum2 = dtSum1 << Summary(
Group( :CustomerID ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
// Now Clean up the N Rows name to # of Invoiced Days
dtSum2:N Rows << set name("# of Invoiced Days");</MODELING></PATH>