Eu tenho um arquivo .csv que se parece com isso:
A,B,1999
C,D,1990
B,A,1989
D,A,1990
A,B,1999
...
Eu quero reorganizá-lo para ficar mais ou menos assim:
A,B,1989,0,B,A,1
A,B,1999,2,B,A,0
C,D,1990,1,D,C,0
D,A,1990,1,A,D,0
Ou seja, gostaria de ter o número de vezes que o par A,B
ocorre para cada um dos valores registrados na terceira coluna, e também o número de vezes B,A
que ocorre para o mesmo valor.
Estou lutando principalmente para combinar as linhas que dizem A,B
com as que dizem B,A
.
Agradeceria muito qualquer ajuda com isso.
Solução GNU
awk
:A saída:
Este em Perl parece estar funcionando.
Explicando linha por linha:
Execute Perl com
,
f ou delimitador, leia os campos em uma matriz , cuide dos finais de linha, execute para cada linha e execute :Pule as linhas em branco na entrada:
Aumente o contador de hash para cada registro:
Inicie o bloco final:
Leia o hash:
Preparar dados para impressão:
Livre-se da entrada gêmea no hash:
data
é o arquivo de entrada.Como resultado, para esses dados de entrada:
você deve obter esta saída: