sas limpando texto entre virgulas
Introdução
É comum, quando se trabalha com uma massa grande de dados, exportar na forma de texto. Entretanto, toda observação fica discriminada por linha e as variáveis associadas (categóricas e/ou numéricas) ficam concatenadas e separadas por vírgula. Quando se exporta desta forma as variáveis categóricas ficam registradas entre aspas. Porém, alguns textos trazem apóstrofes e outros caracteres que podem ser transformados em uma ou mais aspas. Essa situação ocasiona um erro de leitura, pois entre duas vírgulas passam a existir mais de um texto sem fechamento(mais de duas aspas). Para sanar esse tipo de problema, abaixo foi desenvolvido um algoritmo, para eliminar esses erros.
O arquivo original está organizado da seguinte forma:
Observação2(linha2) = “11” “00123” -9.56982 -45.6986 “fazenda olho d’agua” ….
Após transformação em texto fica como a seguir:
Observação2(linha2) = “11”,“00123”,-9.56982,-45.6986,“fazenda olho d”agua”, ….
É importante observar que no arquivo de dados trabalhado só se verificou apenas uma vez (dentro de cada observação), a condição de erro constituída por mais de duas aspas entre duas vírgulas (,“...“....”,). Logo o algoritmo escrito abaixo traz essa restrição. Casos diferentes terão que ser analisados para se verificar a necessidade de alteração do programa.
filename CATY
('\\xxxxxxx\xxxxxxxx\xxxxxxxxxxx\xxxxxxxxxxxxxxxx.txt')lrecl=350;
data
A;
infile CATY truncover; input @1
VAR
$350.;
RUN;
Acima está se lendo o arquivo original de texto e salvando como uma variável intitulada “VAR” com tamanho de até 350 caracteres.
DATA INICIO; SET A; run; data inicio2; set inicio;
X=0;
Y=0;
DO I=1 TO (LENGTH(VAR));
IF SUBSTR(VAR,I,1)= '"' THEN DO;
X = X+1; END;
IF SUBSTR(VAR,I,1)= ',' THEN DO;
Y = Y+1;
END;
END;
RUN;
No arquivo denominado inicio2 (acima) está se mostrando como se calcular o número de ‘”’ e de ‘,’ por observação e usando os comandos ‘DO’,‘substr’ e um acumulador. A