Comment convertir une « chaîne » numérique en date ?Je suis un nouvel utilisateur et j'essaie de convertir une chaîne numérique au format de date jmp.
J'ai essayé de créer une nouvelle colonne en concaténant une chaîne de caractères afin d'obtenir au moins la sortie "jjmmaaa" souhaitée :
(Substr( :START_DATE, 7, 2 ) || Substr( :START_DATE, 5, 2 )) ||Substr( :START_DATE, 1, 4 ) mais cela ne m'a pas amené plus loin.
Des idées à ce sujet ?

Re : Comment convertir une chaîne numérique en date ?Non désolé, ça marche maintenant
Merci pour l'aide
Re : Comment convertir une chaîne numérique en date ?En fait, lorsque je l'exécute sur le fichier de test, j'obtiens des données manquantes dans toutes les lignes. J'utilise JMP 12 - est-ce que cela peut être la raison ?Re : Comment convertir une chaîne numérique en date ?Merci - ça aideRe : Comment convertir une chaîne numérique en date ?Il existe certaines différences entre la façon dont vous utilisez le script de Jim et la formule de colonne.
- La formule de colonne crée une nouvelle colonne basée sur les anciennes données. Si de nouvelles lignes sont ajoutées, la formule s'exécute automatiquement pour convertir les valeurs de date. L'ancienne colonne de données ne peut être supprimée que si la formule est d'abord supprimée.
- Le script est exécuté une seule fois, depuis un éditeur de script. Le script de Jim convertit la colonne sur place, changeant le numéro de la représentation d'origine en une représentation date-heure JMP. Si des données supplémentaires sont ajoutées après l'exécution du script, elles doivent être ajoutées en utilisant le format date-heure JMP attendu par la colonne.
Je pense que la question à laquelle vous voudriez peut-être répondre est la suivante : "Comment ai-je obtenu ces dates que JMP n'aime pas, et quelle serait la meilleure approche ?"
Lorsque vous avez importé ces données dans JMP, éventuellement à partir d'un fichier CSV, ou lorsque vous les avez saisies dans un nouveau tableau, JMP a vu un nombre et a créé une colonne numérique. Pour que JMP voie une date en 20180315 plutôt que 20 180 315, vous devez indiquer à JMP d'interpréter les données au format aaaammjj. Vous pouvez le faire avec les propriétés de colonne dans une table de données et spécifier à la fois les informations et le format.
informat yyyymmdd format monddyyyyinformat yyyymmdd format monddyyyyinformat aaaammjj format monddyaaa
Input Format available after choosing FormatInput Format available after choosing FormatFormat d'entrée disponible après avoir choisi Format
Si vous utilisez l'importation de fichier texte pour obtenir les données d'un fichier CSV, vous pouvez également spécifier un format pour la colonne à l'aide du triangle rouge au-dessus de la colonne sur la deuxième page de l'assistant d'aperçu.
Text import preview wizard second pageText import preview wizard second pageDeuxième page de l'assistant d'aperçu de l'importation de texte
Enfin, les valeurs date-heure de JMP sont représentées sous forme de nombre de secondes depuis le 1er janvier 1904. https://www.jmp.com/support/help/14/date-time-functions.shtml a beaucoup plus d'informations.Si vous voyez un nombre énorme qui n’a aucun sens, il a probablement besoin d’un format. Vous pouvez modifier le format de sortie, en affichant 03 ou Mar, puisque la représentation interne reste la même.
Re : Comment convertir une chaîne numérique en date ?1. Compte tenu de l'exemple de tableau de données que vous avez fourni, le script que j'ai publié fonctionne correctement. Voir fichier joint
2. le 12 est la largeur de l'affichage du format.Voir:
Aide ==> Index de script ==> Table de données ==> Script de colonne
pour une description et des exemples
Re : Comment convertir une chaîne numérique en date ?ce post concerne la partie (\d\d). Les parenthèses créent des groupes et le \d correspond à un seul chiffre.
ce post concerne le \1-\2-\3. ce sont des références arrière et du texte supplémentaire (les tirets) insérés dans la chaîne de résultat. Les chiffres font référence à la parenthèse ouverte correspondante.
Regex est un outil puissant, il existe de nombreux tutoriels sur internet.
Cet exemple est excessif pour le problème en question ; JMP dispose d'un format de date qui correspond déjà au format de vos nombres après les avoir convertis en caractères.
Re : Comment convertir une chaîne numérique en date ?Merci d'avoir partagé. Je comprends mieux cela, mais cela ne fonctionne que pour moi au premier rang. Après cela, il renvoie simplement les « valeurs manquantes ».
Aussi, que fait le "12" dans
dt : date de début < < format ( "jjmmaaaa" , 12 ) ;
?
Re : Comment convertir une chaîne numérique en date ?Merci - cela fonctionne. Cependant, je ne suis pas entièrement sûr de bien comprendre.
Est le "(\d\d\d\d)(\d\d)(\d\d)" indiquant le format d'entrée ?
Que fait « \1-\2-\3 » ?
Merci d'avoir aidé
Re : Comment convertir une chaîne numérique en date ?Jim - J'ai mal commencé. Le format aaaammjj fonctionne sans regex ni substr :
Informat( Char( :START_DATE ), "aaaammjj" )
Re : Comment convertir une chaîne numérique en date ?Voici un script simple pour faire la même chose que Craige
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:start_date = Date MDY(
Num( Substr( Char( :start_date ), 5, 2 ) ),
Num( Right( Char( :start_date ), 2 ) ),
Num( Left( Char( :start_date ), 4 ) )
)
);
dt:start_date << format("ddmmyyyy",12);Re : Comment convertir une chaîne numérique en date ?Vous êtes vraiment proche ; vous aurez besoin de char(start_date) pour obtenir une chaîne à partir du numéro. J'ai essayé une approche légèrement différente pour une formule de colonne
Informat( Regex( Char( :START_DATE ), "(\d\d\d\d)(\d\d)(\d\d)", "\1-\2-\3" ), "ymd" )
et définissez le format de la colonne
Output format different from input formatOutput format different from input formatFormat de sortie différent du format d'entrée
La représentation interne préférée de JMP pour les dates est la valeur date-heure JMP, qui est une valeur numérique qui peut être formatée avec un certain nombre de formats différents.