importa csv e cambia solo il formato di poche colonneHo alcuni file CSV che devono essere importati e ci sono alcuni campi correlati alle versioni del software. Tuttavia sono nel csv come xyz e non sono racchiusi tra virgolette, quindi JMP tenta di inserirlo come tipo di dati numerico. Quando lo fa, JMP crede che il numero sia una data e lo converte in una data, quindi è molto difficile riconvertirlo in una versione utilizzabile.
Se importo manualmente un file, posso usare l'anteprima per forzare le colonne di cui ho bisogno sui tipi di dati che voglio. Tuttavia, lo script di importazione risultante ha "nuova colonna()" per ogni singola colonna e devo omettere l'intera cosa in modo che JMP importi semplicemente il file OPPURE abbia tutte le 186 colonne elencate solo così posso controllare l'importazione di alcune.
Il vero problema è che alcuni di questi file hanno colonne diverse ... alcuni sono in comune, altri no, ma in tutti i casi le colonne della versione sono in comune E devo controllare come vengono introdotte.
Di seguito è riportato ciò che vorrei essere in grado di fare (o qualcosa del genere) ma il numero totale di colonne è davvero 186...
Open(
filepath,
columns(
New Column( "ALGORITHM_VERSION", Character, "Nominal" ),
New Column( "CLUST_ALG_VERSION", Character, "Nominal" ),
New Column( "CYTOFILEIO_VERSION", Character, "Nominal" ),
New Column( "RELEASE_VERSION", Character, "Nominal" )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
SceneggiaturaRe: importa csv e cambia solo il formato di poche colonneEcco uno script che dovrebbe funzionare per cambiare correttamente le colonne in carattere.
Names Default To Here( 1 );
dt = Open(
filepath,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
For( i = 1, i <= N Cols( dt ), i++,
If(
Contains(
Uppercase( Column( dt, i ) << get name ),
"_VERSION"
) & Column( dt, i ) << get data type == "Numeric",
Column( dt, i ) << set format( "Fixed Dec", 18, 0 );
Column( dt, i ) << data type( "Character" );
)
);
Re: importa csv e cambia solo il formato di poche colonnePotresti usare una formula come
Char( Month( :colName ) ) || "." || Char( Day( :colName ) ) || "." ||
Char( Year( :colName ) )
riconvertire?
Re: importa csv e cambia solo il formato di poche colonneGuardando alcuni dei layout, funzionerebbe per alcuni di essi, ma non per tutti. e, naturalmente, non conoscerò il layout che sto ricevendo finché non verrà elaborato.
In questo momento abbiamo il codice per ogni viale di CSV e dobbiamo solo inviare i file lungo il percorso corretto per essere gestiti ... ma dal momento che dovrebbe essere uguale al 90% per tutti, sembra essere un peccato lì non è una soluzione più dinamica.