Imposta il tipo di dati della colonna per JSON Panda SplitSto usando JSL per importare un file JSON usando un formato Panda Split. Quando lo faccio, tutte le colonne vengono importate come Carattere, quando in pratica dovrebbero essere una combinazione di Carattere e Numerico. Posso scrivere uno script JSL per convertire ciascuna in Numerico, ma questo convertirà anche le colonne Carattere (ed eliminerà i loro dati).
Utilizzando JSL, posso rilevare se un tipo di dati deve essere carattere o numerico e convertirlo di conseguenza? Oppure c'è un modo per farlo durante la fase di importazione? Non conosco in anticipo le colonne per un file specifico.
Versione JMP 18.1.1
dt_cols = dt << Get Column Names();
For Each({col, i}, dt_cols,
Try(
// No warning, just converts everything.
As Column(dt, col) << Data Type("Numeric");
As Column(dt, col) << Modeling Type( "Continuous" );
);
);Accesso ai datiFinestreRe: Imposta il tipo di dati della colonna per JSON Panda SplitNon ho un esempio appropriato per testarlo (JMP si blocca con l'esempio JSON che ho ottenuto rapidamente), quindi non posso verificare se esiste un modo per farlo in JSON Wizard.
È possibile convertire solo valori numerici controllando prima i valori della colonna e poi convertendoli di conseguenza.
Un modo per eseguire la conversione è controllare prima alcuni valori della colonna e poi convertire se sono OK. Alcune opzioni che potresti controllare
- Controlla solo il primo valore
- Controlla il primo e l'ultimo valore
- Controlla tutti i valori
- Controlla un sottoinsieme casuale di valori
Al giorno d'oggi farei il controllo usando Num(< cambia il tipo di dati della colonna. Penso che puoi anche usare InFormat() per controllare la corrispondenza "migliore" (potrebbe essere anche meglio di Num()).
Re: Imposta il tipo di dati della colonna per JSON Panda SplitSì, funziona. Grazie Jarmo.
Re: Imposta il tipo di dati della colonna per JSON Panda SplitEcco un'implementazione JSL di riferimento:
rows_to_check_for_conversion = 100;
// Get column names.
dt_cols = dt << Get Column Names();
// Change data types.
For Each( {c, i}, dt_cols,
non_missing_rows = dt << Get Rows Where( !Is Missing( As Column( dt, c ) ) );
row_check = 0;
convert_to_number = 1;
While( row_check < rows_to_check_for_conversion & row_check < N Items( non_missing_rows ) & convert_to_number == 1,
row_check = row_check + 1;
r = non_missing_rows[row_check];
val = Num( dt:c[r] );
If( Is Missing( val ),
convert_to_number = 0
);
);
If( convert_to_number == 1,
As Column( dt, c ) << Data Type( "Numeric" );
As Column( dt, c ) << Modeling Type( "Continuous" );
);
);Re: Imposta il tipo di dati della colonna per JSON Panda SplitAlcune modifiche che potrebbe essere utile apportare: utilizzare Column() anziché As Column() e verificare se si desidera aggiungere << Restrict alla chiamata Num() (l'ho fatto per la mia versione di qualcosa del genere).