Come si leggono i file di dati grezzi compressi con gzip (file .gz) in SAS? | SAS FAQ

Giu 25, 2021
admin

Nota: Questa FAQ è specifica per la lettura di file in ambiente UNIX, e potrebbe non funzionare in tutti gli ambienti UNIX.

Può essere molto efficiente memorizzare grandi file di dati grezzi compressi con gzip (come file .gz). Tali file sono spesso 20 volte più piccoli del file di dati grezzi originale. Per esempio, un file di dati grezzi che richiederebbe 200 megabyte potrebbe essere compresso per essere più piccolo di 10 megabyte. Illustriamo come leggere un file compresso con un piccolo esempio. Considerate il file di dati mostrato qui sotto.

AMC Concord 220 2930 4099AMC Pacer 170 3350 4749AMC Spirit 220 2640 3799Buick Century 200 3250 4816Buick Electra 150 4080 7827 

Se questo fosse un file di dati grezzi chiamato rawdata.txt potremmo leggerlo usando un programma SAS come quello mostrato sotto.

FILENAME in "rawdata.txt" ;DATA test; INFILE in ; INPUT make $ 1-14 mpg 15-18 weight 19-23 price 24-27 ;RUN; 

Sulla maggior parte dei computer UNIX (ad esempio, Nicco, Aristotele) si potrebbe comprimere rawdata.txt digitando

gzip rawdata.txt & 

e questo creerebbe una versione compressa chiamata rawdata.txt.gz . Per leggere questo file in SAS, normalmente si dovrebbe prima decomprimere il file, e poi leggere la versione non compressa in SAS. Questo può richiedere molto tempo per decomprimere il file e consumare una grande quantità di spazio su disco. Invece, è possibile leggere il file compresso rawdata.txt.gz direttamente in SAS senza doverlo prima decomprimere. SAS può decomprimere il file “al volo” e non crea mai una versione non compressa separata del file. Sulla maggior parte dei computer UNIX (ad esempio, Nicco, Aristotele) si potrebbe leggere il file con un programma come questo.

FILENAME in PIPE "gzip -dc rawdata.txt.gz" LRECL=80 ;DATA test; INFILE in ; INPUT make $ 1-14 mpg 15-18 weight 19-23 price 24-27 ;RUN; 

Nel tuo programma, assicurati di cambiare lrecl=80 con la larghezza del tuo file di dati grezzi (la larghezza della linea di dati più lunga). Se non siete sicuri di quanto sia largo il file, usate semplicemente un valore che sia certamente più largo della linea più larga del vostro file.

È più probabile che usiate questa tecnica quando state leggendo un file molto grande. Potete testare il vostro programma leggendo solo una manciata di osservazioni usando il parametro obs= sull’istruzione infile, ad esempio, infile in obs=20; leggerebbe solo le prime 20 osservazioni dal vostro file.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.